1. 程式人生 > >使用VS Code開發asp.net core (上)

使用VS Code開發asp.net core (上)

insider pub 方法 開發 ctr 自動安裝 查看 系統 地址

本文是基於Windows10的.

下載地址: https://code.visualstudio.com/

insider 版下載地址: https://code.visualstudio.com/insiders/

這兩個版本可以同時安裝在系統中.

安裝過程就不介紹了.

Visual Studio Code簡介

1.可以點擊圖標打開vscode

2.如果安裝的時候勾選了註冊到Path, 那麽可以在命令行輸入code來打開vscode.

技術分享圖片

Git集成

使用git隨便clone一個項目下來, 然後用vscode打開項目, 隨便打開某個文件, 添加幾行代碼:

技術分享圖片

9-11行是我新添加的, 左邊綠色的豎條(點擊就會看到明細)就表示這幾行是新添加的.

然後修改一下h1的標題:

技術分享圖片

修改的地方左邊會出現藍色的豎條(點擊就會看到明細). 表示這行發生了變化.

這次再刪除兩行代碼:

技術分享圖片

左邊會出現一個紅色的箭頭, 鼠標可以放在這個箭頭上, 然後點擊一下查看明細, 就可以看到刪除的代碼行:

技術分享圖片

點擊vscode左邊的Source Control按鈕:

技術分享圖片

按鈕圖標上的1表示有一個文件有變化. 文件上還有undo, stage按鈕. 點擊文件後可以看到文件變化前後的對比明細.

左側上方還有很多功能菜單就不一一介紹了.

配置VSCode

打開File-Preferences-Settings:

技術分享圖片

技術分享圖片

左邊的是VSCode默認的設置, 如果想要修改某些設置, 就把他們復制到右側窗口, 保存後會立即生效.

在上圖中, 我設置了終端命令行為采用外部的命令行程序, 並且使用git的bash作為命令行程序. 保存後會立即生效, 無需重啟VSCode.

註意右側文件上方, 目前修改的是User Settings. 也就是當前登錄用戶的配置.

如果只想針對某個項目(文件夾)進行設置的話, 那麽可以點擊Workspace Settings. 這時候, 該目錄會自動生成一個文件: vscode/settings.json, 所有修改的設置都會保存在這個文件裏面.

技術分享圖片

除了Settings, 還可以配置快捷鍵, 點擊Preferences-Keyboard Shortcuts (Ctrl+K, S):

技術分享圖片

打開後點擊文件上方的keybindings.json:

技術分享圖片

也會出現類似的配置畫面.

左邊的菜單, 如果不需要的話也可以隱藏起來, 鼠標右鍵點擊Hide即可:

技術分享圖片

顯示所有命令: Ctrl+Shift+P

技術分享圖片

搜索並打開文件: Ctrl+P. 隨著輸入就會自動過濾文件.

技術分享圖片

安裝擴展:

點擊Extensions按鈕圖標, 進入擴展頁面.

技術分享圖片

可以使用各種排序方法展示擴展, 然後點擊擴展, 安裝然後點擊reload重啟vscode即可.

這裏我們必須要安裝C#擴展.

去掉過濾條件, 就可以看到安裝好的擴展了:

技術分享圖片

建立Asp.Net Core項目

安裝asp.net core環境:

打開網站 https://www.microsoft.com/net, 點擊download.

然後選擇下載.net core.

技術分享圖片

下載後安裝即可. 如果你已經安裝vs2017, 可能就不需要再安裝這個了.

打開命令行: 輸入dotnet --version檢查安裝.

技術分享圖片

安裝成功, 版本為2.1.4

建立asp.net core 項目

用命令行找個地方, 建立目錄, 然後執行一下dotnet new --help命令, 查看一下建項目的幫助:

技術分享圖片

那我建立一個不帶用戶驗證的mvc項目:

dotnet new mvc --auth None

技術分享圖片

命令行輸入 code . 就會用vscode打開該目錄:

技術分享圖片

這些就是生成文件.

打開後, vscode會自動安裝C#依賴.

如果VSCode上方有任何選擇提示, 請選擇Yes或者Restore.

試一下項目是否正確:

打開命令行: Ctrl+Shift+C或者在VSCode內打開命令行: Ctrl+Shift+`

內置的默認命令行是Powershell, 我不是很喜歡它的速度, 所以可以通過之前講的修改settings的方法把它改成Commmand Prompt.

執行命令dotnet run:

技術分享圖片

運行成功, 打開瀏覽器, 可以看到項目的畫面:

技術分享圖片

使用VSCode開發asp.net core項目

代碼導航.

使用F12來導航代碼, 這個和vs是一樣的.

打開Program.cs 鼠標選中22行左右的StartUp這個單詞, 然後按F12. 就會導航到Startup這個類.

點擊類或方法上面的Reference, 可以查看對其的引用:

技術分享圖片

可以使用Alt+左右方向鍵, 來導航的前一個或者下一個動作畫面.

按住Shift+F12可以看到它的所有的引用:

技術分享圖片

實際上點擊鼠標右鍵, 都會有相應的菜單:

技術分享圖片

另一個重要的導航方法就是 使用Ctrl+P, 通過文件名來查找文件:

技術分享圖片

添加文件

可以使用這個圖標按鈕來添加文件, 也可以使用菜單, 或者鼠標右鍵, 這個就不詳細講了.

這裏添加一個TestController.cs:

技術分享圖片

打開該文件, 開始編寫代碼:

技術分享圖片

剛剛輸入了names, 然後出現了兩個貌似一樣的提示...其實他們是不一樣的, 第一個表示的是C#關鍵字namespace. 第二個表示的是namespace代碼片段.

所以選中第二個, 再輸入命名空間的名字, 就會出現這段代碼:

技術分享圖片

建立TestController, 繼承於Controller:

技術分享圖片

這時候Controller並沒有被識別出來. 當然可以點擊左邊黃色的圖標, 來選擇引用.

但是我們可以使用快捷鍵Ctrl+. 來進行Quick Fix快速修復, 選擇引用:

技術分享圖片

技術分享圖片

代碼段 Snippets

打開User Snippets菜單:

技術分享圖片

選擇C#:

技術分享圖片

然後把裏面註釋的文字留下, 復制其中那段代碼並修改稱自己的代碼段:

    "Create Controller": {
        "prefix": "con",
        "body": [
            "public class $1Controller: Controller",
            "{",
            "\t$0",
            "}"
        ],
        "description": "Create a Controller"
    }

這個代碼段的名字叫Create Controller, 輸入con後將會調用該代碼段, 代碼段中$1的位置需要用戶輸入Controller的名字, 輸入完成後按Tab光標將會留在$0的位置.

您可以試一下, 肯定是好用的.

但是這樣輸入的時候會稍顯不友好, 因為沒有提示, 那麽可以將用戶輸入的部分改成這樣:

        "Create Controller": {
        "prefix": "con",
        "body": [
            "public class ${1: ControllerName}Controller: Controller",
            "{",
            "\t$0",
            "}"
        ],
        "description": "Create a controller"
    }

然後試試:

技術分享圖片

這樣就好多了.

這個在代碼段輸入的變量也可以被引用:

    "Create Controller": {
        "prefix": "con",
        "body": [
            "public class ${1: ControllerName}Controller: Controller",
            "{",
            "\t// 建立了${1: ControllerName}Controller",
            "\t$0",
            "}"
        ],
        "description": "Create a controller"
    }

再試試:

技術分享圖片

然後再建立一個Action的代碼段:

    "Create Action": {
        "prefix": "act",
        "body": [
            "public IActionResult ${1: ActionName}()",
            "{",
            "\t// 建立了${1: ActionName} Action Method",
            "\t$0",
            "\treturn View();",
            "}"
        ],
        "description": "Create a controller"
    }

安裝snippet擴展.

去vscode擴展畫面可以搜索snippet關鍵字就可以看到各種snippet擴展:

技術分享圖片

Html Zen coding:

zen coding是一種編寫html和css的方法, 很快捷.

打開Views/Home/About.cshtml, 然後在空白處輸入div然後按Tab:

技術分享圖片

隨後完整的div標簽就出來了:

技術分享圖片

zen coding允許你使用css選擇器進行更復雜的結構化寫法, 例如輸入 div>p>ul>li:

技術分享圖片

然後立即按Tab, 就會出現下列代碼:

技術分享圖片

如果想重復5個li, 那麽輸入 div>p>ul>li*5:

技術分享圖片

如果想加上class屬性, div>p>ul.list-group>li.list-group-item*5:

技術分享圖片

一個建立bootstrap form的例子,

form>(.form-group>label+input.form-control)*4+.form-group>input[type=submit].form-control

就會生成下面的form:

技術分享圖片

其中+表示下一個元素中括號可以寫其他屬性.

添加移除asp.net core項目引用.

可以通過編輯.csproj文件來添加或者移除項目引用.

註意這裏並沒有智能提示, 最好是在Nuget網站搜索好相關包之後填寫進來.

編輯結束之後, vscode會提示進行restore, 這就相當於在命令行執行dotnet restore命令.

此外, 也可以通過命令行來添加nuget包, 使用dotnet add package xxx命令來添加nuget包:

技術分享圖片

這時, csproj文件裏就會出現AutoMapper的PackageReference:

技術分享圖片

Build項目

使用命令dotnet build來進行此操作.

運行項目使用dotnet run.

項目中.vscode目錄下有個tasks.json文件, 打開它:

技術分享圖片

這裏有一個task叫做build, 命令是dotnet, 參數是build和項目文件.

如果執行VSCode命令Ctrl+Shift+B, 選擇build就會執行此命令:

技術分享圖片

技術分享圖片

還有一個launch.json和它也差不多, 一會再說.

Debugging

看一下Debugging畫面:

技術分享圖片

下來選單裏面兩個配置就來自launch.json.

點擊綠色箭頭就可以debugging (F5也行). 當然也可以start without debugging (Ctrl+F5), 這時瀏覽器會自動打開主頁:

技術分享圖片

打開HomeController.cs設置一個斷點:

技術分享圖片

按F5開始並debug項目, 點擊About菜單:

技術分享圖片

可以看到命中了斷點, 打開Debug畫面, 裏面有豐富的信息.

可以添加watch:

技術分享圖片

同樣也可以在RazorView裏面設置斷點.

通過這些可以看到vscode的debug體驗很好, 不必任何一款IDE差多少. 所以vscode絕不是一個高級編輯器這麽簡單.

Build Watcher .

還有另外一種方式可以, 它允許對項目持續的Build.

首先打開csproj文件, 添加一個watcher tool:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AutoMapper" Version="6.2.2" />
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.2" />
    <DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="2.0.0" />
  </ItemGroup>  

</Project>

它就是一個nuget包.

然後執行 dotnet restore.

它的用法就是在dotnet xxx命令之間加上watch, 例如 dotnet watch run.

技術分享圖片

隨後我更改一下HomeController About方法裏面的Message:

技術分享圖片

可以看到項目被停止, 重新Build, 然後又開始了:

技術分享圖片

dotnet watch run配合Debugging.

看一下Debug裏面的.net core Attach啟動項:

技術分享圖片

點擊綠色箭頭後出現如下選項:

技術分享圖片

我們的dotnet watch run正在運行, 這時候我還想進行debug, 那麽就可以選擇dotnet exec這個選項, 它會執行dotnet watch run實時build出來的dll. 這兩個動作是在不同的進程執行的.

技術分享圖片

設置斷點試試:

技術分享圖片

很好.

如果不想debug了, 點擊紅色插頭即可停止, 並且不影響dotnet watch run的運行.

剩下有一半內容, 過一兩天再寫.

使用VS Code開發asp.net core (上)