一. 版本里的坑
自從 .NET Core 2.1.0版本發佈之後,近幾個月微軟又進行了幾回小版本的發佈,可見 .NET Core 是一門生命力很是活躍的技術。通過一段時間的實踐,目前作 ASP.NET Core 開發時,使用的 Nuget 包,好比 Microsoft.AspNetCore.App
等的版本號要與 .NET Core 版本號(不是SDK版本號,後續說明)保持一致,不然編譯或者運行的時候可能會出現一些稀奇古怪的錯誤,好比 Microsoft.AspNetCore.App
2.1.0版本對應 .NET Core 2.1.0版本,這可謂是一個坑。html
二. 版本對照
.NET Core 版本 | SDK 版本 | Runtime 版本 |
---|---|---|
2.1.2 | 2.1.400 | 2.1.2 |
2.1.2 | 2.1.302 | 2.1.2 |
2.1.1 | 2.1.301 | 2.1.1 |
2.1.0 | 2.1.300 | 2.1.0 |
以上數據來自官方:https://www.microsoft.com/net/download/dotnet-core/2.1shell
三. 指定項目使用的 SDK 版本
前幾天 Visual Studio 2017 推送了 15.8 版本,此版本自帶了 .NET Core 2.1.2 (SDK版本 2.1.400),因爲公司的項目使用的 .NET Core 2.1.0 版本(SDK版本 2.1.300),在編譯的時候直接報錯了。這是由於 .NET Core 項目默認使用最新版本的 .NET Core,咱們的Nuget包沒有進行升級,因此報錯了。最終咱們採用了指定項目SDK版原本解決了。操做以下:json
在項目的根目錄打開cmd,執行命令便可:markdown
dotnet new global.json --sdk-version <SDK版本號>
要注意的是最後的參數是SDK版本,不是.NET Core 版本,可參照上表。post
可在項目根目錄執行命令來檢查,看看是否與設置的SDK版本號一致:url
dotnet --version
操做演示:spa
global.json 文件內容:code
{
"sdk": { "version": "2.1.300" } }