.NET Core with Visual Studio Codejavascript
目錄html
概述... 2前端
先決條件... 2java
練習1: 安裝和配置.NET Core以及Visual Studio Code 擴展... 2node
任務1:安裝Visual Studio Code和.NET Core. 2web
任務2:安裝插件... 4shell
練習2:使用命令行界面構建. NET Core應用程序... 5npm
練習3:使用 Visual Studio Code和 Omnisharp 調試 c# 代碼... 12json
練習4: 使用Visual Studio Code 開發ASP.NET Core 應用程序... 14
開源和跨平臺開發是Microsoft 的當前和未來相當重要的策略。.NET Core已開源,同時開發了其餘項來使用和支持新的跨平臺策略。.NET Core 2.0 目前已經正式發佈,是適用於針對 Web 和雲構建跨平臺應用程序的最新開源技術,可在 Linux、Mac OS X 和 Windows 上運行。
.NET Core使用各類命令行工具來生成基架、構建和運行應用程序,同時可使用 Visual Studio Code 進行編輯。
Visual Studio Code 是微軟爲廣大開發人員提供的免費開源的跨平臺代碼編輯器,和其它流行的代碼編輯器,如:Sublime, Atom同樣,它很是小,運行速度快,同時經過各類插件支持不一樣開發語言的編寫。不一樣的地方在於,VSC的插件不只僅提供靜態的語言高亮,自動語法檢測和完成功能外;還提供更加高級的編譯器服務支持,這使得VSC能夠在必定程度上替代IDE的功能,進行代碼的編譯,調試和發佈操做。
本實驗將介紹如何開發.NET Core跨平臺應用程序,以及如何在 Linux、OS X 和 Windows 上的 Visual Studio Code (code.visualstudio.com) 中編寫代碼。
1. 爲了完成這個實驗,你須要一個Windows 10虛擬機
2. 你須要在虛擬機上手動安裝.NET Core和Visual Studio Code,你能夠按照練習1 的任務1來搭建實驗環境
3. 你須要下載和安裝Visual Studio Code的C#擴展,你能夠按照練習1的任務2來完成
在本練習中,您將瞭解安裝和配置 Visual Studio Code 和.NET Core擴展出於演示目的所需的安裝和配置要點
1. 下載Visual Studio Code ,從https://code.visualstudio.com/ 下載最新版本並安裝
2. 從 https://www.microsoft.com/net/core 下載.NET Core 2.0進行安裝
3. Node.JS和NPM,以及 bower, gulp 和 grunt 等前端工具, Node.js是一個javascript的運行引擎,提供服務端的javascript運行能力,同時也包含了npm這個包管理器,能夠用來安裝 bower, glup,grunt等前端工具。下載地址:http://nodejs.org
安裝完成後,讓經過如下命令安裝前端工具
npm install bower gulp grunt-cli -g
安裝好Visual Studio Code 以後,須要安裝下面插件
1. C# 擴展http://www.omnisharp.net/
2. 安裝vscode-nuget-package-manager
您能夠在Visual Studio Code中界面安裝這些擴展(選擇菜單查看-擴展), 也可使用 Ctrl + P, 而後輸入 ext install vscode-nuget-package-manager或 ext install csharp。一旦您安裝了 NuGet 項目管理器, 您還將使用它來安裝 NuGet 包。
.NET Core CLI 是開發 .NET Core 應用程序的一個新的跨平臺工具鏈的基礎。它是「基礎」的緣由時它是在其它的、高級別工具的主要層,如集成開發環境(IDEs),由編輯器和構建者組成。
默認它是跨平臺的,而且對支持的每一個平臺有相同的表現範圍。這意味着,當你學會如何使用工具,你能夠從任何支持的平臺上以一樣的方式使用它。
本練習中如今咱們假設你已經安裝好了VS Code開發工具、.Net Core 2.0 SDK dotnet-sdk-2.0.0(注意本身的操做系統),而且已經爲VS Code安裝好了C#擴展。
1、 咱們先在咱們的電腦硬盤的新建一個文件夾。我把這個地方選在D:\WorkTest下,建立的文件夾名稱爲HelloWorld。注意,這一步不是在VS Code中完成的,VS Code中不能建立文件夾。
2、 在VS Code開發環境中,選擇 文件->打開文件夾,而後選擇咱們剛剛建立文件夾HelloWorld打開
3、 選擇 查看->集成終端 命令或直接摁下快捷鍵Ctrl+`,VS Code開發環境中會出現一個集成的終端。好比我接下來在集成終端中輸入命令dotnet new sln -n HelloWorld,在咱們的HelloWorld文件夾下會出現一個解決方案HelloWorld.sln
4、 接下來,咱們再在集成終端中輸入dotnet new mvc -n HelloWorld.Web,通過VS Code一陣的掙扎和折騰,咱們會發現左邊的文件列表中多了一個叫HelloWorld.Web的MVC項目。以下圖:
5、 按下F5,選擇.NET Core, 出來一個launch.json,以下圖:
6、 在集成終端中輸入命令dotnet build HelloWorld.Web命令,回車,完過後成成了一個東西在Debug下邊。好了,咱們把這段生成的東西放在launch.json的.NET Core Launch (web)配置項的program中,而後順便改一下下邊那個cwd。完過後看起來效果是下邊這樣子的:
7、 點擊左邊的那個小蟲子,VS Code中的左側會出現上圖中的狀況,選擇.NET Core Launch (web),再次摁下F5,點擊「配置任務運行程序」,自動生成了下邊這個配置json文件:
8、 咱們如今配置一下這個新生成的task.json吧。也就是在tasks配置項中添加以下內容,指定一下任務在build時的直接命令對象。${workspaceRoot}的意思就是你項目的根目錄,別寫成絕對路徑,否則回頭你項目發佈後找不到
9、 再次按下F5, 一個.Net Core MVC網站出如今咱們眼前
有可能會出現下面的錯誤:
這是因爲默認啓動的是 .NET Core Launch (console),點擊調試(左邊小蟲子圖標),選擇.NET Core Launch (web)
10、 下面咱們演示給項目添加一個Nuget包
利用咱們前面安裝的VS code 的Nuget 包擴展插件,咱們選中HelloWorld.Web 項目,使用UI菜單查看- 命令面板:
選擇NuGet Package Manager:Add Package, 回車,輸入NodaTime , 選擇版本後提示添加成功,打開HelloWorld.Web.csproj 文件能夠看到NodaTime已經添加到工程中
打開 HomeController 文件,加入下述代碼:
在Views\Home\Index.cshtml 加入下面代碼
上面的練習咱們已經看到項目下有個.vscode 文件夾。裏面有2個文件tasks.json 和launch.json.
tasks.json 用於dotnet 構建任務的配置數據,當你按下F5 啓動調試時VS Code 能夠生成項目
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"taskName": "build",
"command": "dotnet build",
"type": "shell",
"group": "build",
"presentation": {
"reveal": "silent"
},
"problemMatcher": "$msCompile",
"options": {
"cwd": "${workspaceRoot}/HelloWorld.Web"
}
}
]
}
launch.json包含調試模式的配置數據,默認是從vs code啓動或者附加進程。
launch.json中有不少屬性能夠設置, 經過智能提示查看有那些屬性能夠設置, 若是要查看屬性的具體含義, 能夠把鼠標懸停在屬性上面, 會屬性的使用說明.
對於控制檯和Web項目是很是簡單的,只需在代碼中設置斷點,導航到調試窗口(ctrl + shift + d)並點擊調試按鈕 - 「.Net Core Launch」選項應該默認選擇。您的應用程序如今應該中止在您的斷點。
使用VsCode將調試器附加到正在運行的進程也很是簡單,設置斷點,從調試菜單中選擇「.Net Core Attach」選項,而後進行調試。任務欄應顯示您能夠選擇附加調試器的正在運行的進程的列表 - 在本示例中,咱們將附加到正在運行的dotnet網站進程。
本練習要使用Visual studio code完成一個包含多個項目的解決方案,包括類庫和Web項目。結合Visual Studio Code和.NET Core CLI,建立項目結構以下:
piedpiper
└── src
├── piedpiper.domain
├── piedpiper.sln
├── piedpiper.tests
└── piedpiper.website
首先,咱們將建立咱們的解決方案(.sln)文件,我一直都喜歡在頂級源文件夾中建立解決方案文件D:\WorkTest\piedpiper, 打開Visual Studio Code的集成終端,
PS D:\WorkTest\piedpiper> cd src
PS D:\WorkTest\piedpiper\src> dotnet new sln -n piedpiper
這將建立一個sln名爲的新文件piedpiper.sln。
接下來,咱們使用dotnet new <projecttype>命令中的output參數在特定文件夾中建立一個項目:
PS D:\WorkTest\piedpiper\src> dotnet new mvc -o piedpiper.website
已成功建立模板「ASP.NET Core Web App (Model-View-Controller)」。
這將在同一目錄中的piedpiper.website文件夾中建立一個ASP.NET Core MVC應用程序。若是咱們目前看到咱們的文件夾結構,它看起來像這樣:
接下來咱們能夠爲咱們的域名和測試項目作一樣的事情:
PS D:\WorkTest\piedpiper\src> dotnet new classlib -o piedpiper.domain
PS D:\WorkTest\piedpiper\src> dotnet new xunit -o piedpiper.tests
在這一點上,咱們有一個沒有引用項目的解決方案文件,咱們能夠經過調用list命令來驗證這一點:
PS D:\WorkTest\piedpiper\src> dotnet sln list
未在解決方案中找到項目。
接下來咱們將咱們的項目添加到咱們的解決方案文件,咱們很容易在Visual Studio 2017中打開解決方案,而後手動添加對每一個項目的引用。Visual Studio Code也能夠經過.NET Core CLI完成。
如今開始使用如下命令添加每一個項目,咱們經過引用.csproj文件來執行此操做:
PS D:\WorkTest\piedpiper\src> dotnet sln add piedpiper.website/piedpiper.website.csproj
PS D:\WorkTest\piedpiper\src> dotnet sln add piedpiper.domain/piedpiper.domain.csproj
PS D:\WorkTest\piedpiper\src> dotnet sln add piedpiper.tests/piedpiper.tests.csproj
注意:若是您使用的是基於Linux / Unix的shell,您可使用globbing模式在單個命令中執行此操做!
dotnet sln add **/*.csproj
如今,當咱們調用list咱們的解決方案文件時,咱們應該獲得如下輸出:
S D:\WorkTest\piedpiper\src> dotnet sln list
項目引用
----
piedpiper.website\piedpiper.website.csproj
piedpiper.domain\piedpiper.domain.csproj
piedpiper.tests\piedpiper.tests.csproj
接下來,咱們要開始向咱們的項目添加項目引用,經過dotnet add reference命令將咱們的域庫連接到咱們的網站和單元測試庫:
PS D:\WorkTest\piedpiper\src> dotnet add piedpiper.tests reference piedpiper.domain/piedpiper.domain.csproj
已將引用「..\piedpiper.domain\piedpiper.domain.csproj」添加到項目。
如今,若是要查看測試項目的內容,咱們將看到咱們的domain 已被引用:
PS D:\WorkTest\piedpiper\src> cd .\piedpiper.tests\
PS D:\WorkTest\piedpiper\src\piedpiper.tests> cat .\piedpiper.tests.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0-preview-20170628-02" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\piedpiper.domain\piedpiper.domain.csproj" />
</ItemGroup>
</Project>
接下來,咱們將爲咱們的網站項目作一樣的事情,因此讓咱們去咱們的網站文件夾並運行相同的命令:
dotnet add piedpiper.website reference piedpiper.domain/piedpiper.domain.csproj
若是咱們返回到咱們的根源文件夾並運行build命令,咱們應該看到全部的構建成功:
PS D:\WorkTest\piedpiper\src> dotnet build
用於 .NET Core 的 Microsoft (R) 生成引擎版本 15.3.409.57025
版權全部(C) Microsoft Corporation。保留全部權利。
piedpiper.domain -> D:\WorkTest\piedpiper\src\piedpiper.domain\bin\Debug\netstandard2.0\piedpiper.domain.dll
piedpiper.tests -> D:\WorkTest\piedpiper\src\piedpiper.tests\bin\Debug\netcoreapp2.0\piedpiper.tests.dll
piedpiper.website -> D:\WorkTest\piedpiper\src\piedpiper.website\bin\Debug\netcoreapp2.0\piedpiper.website.dll
已成功生成。
0 個警告
0 個錯誤
假設咱們要將NuGet包添加到咱們的一個項目中,咱們可使用該add package命令來執行此操做。
首先導航到要添加NuGet軟件包的項目:
PS D:\WorkTest\piedpiper\src> cd .\piedpiper.tests\
PS D:\WorkTest\piedpiper\src\piedpiper.tests> dotnet add package shouldly
Writing C:\Users\dell\AppData\Local\Temp\tmp68E4.tmp
info : Adding PackageReference for package 'shouldly' into project 'D:\WorkTest\piedpiper\src\piedpiper.tests\piedpiper.tests.csproj'.
log : Restoring packages for D:\WorkTest\piedpiper\src\piedpiper.tests\piedpiper.tests.csproj...
info : GET https://api.nuget.org/v3-flatcontainer/shouldly/index.json
info : OK https://api.nuget.org/v3-flatcontainer/shouldly/index.json 512ms
info : GET https://api.nuget.org/v3-flatcontainer/shouldly/2.8.3/shouldly.2.8.3.nupkg
info : OK https://api.nuget.org/v3-flatcontainer/shouldly/2.8.3/shouldly.2.8.3.nupkg 84ms
log : Installing Shouldly 2.8.3.
info : Package 'shouldly' is compatible with all the specified frameworks in project 'D:\WorkTest\piedpiper\src\piedpiper.tests\piedpiper.tests.csproj'.
info : PackageReference for package 'shouldly' version '2.8.3' added to file 'D:\WorkTest\piedpiper\src\piedpiper.tests\piedpiper.tests.csproj'.
或者,咱們可使用版本參數指定要安裝的版本:
dotnet add package shouldly -v 2.8.3
更新NuGet包
將NuGet軟件包更新到最新版本也是同樣簡單,只需使用相同的命令而不使用版本參數:
dotnet add package shouldly
你也能夠下載word 文檔 http://url.cn/5e3NT3G