一. 版本裡的坑
自從 .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版本,這可謂是一個坑。
二. 版本對照
.NET Core 版本 | SDK 版本 | Runtime 版本 |
---|---|---|
2.1.2 | 2.1.400 | |
2.1.302 | ||
2.1.1 | 2.1.301 | |
2.1.0 | 2.1.300 | 2.10 |
以上資料來自官方:
https://www.microsoft.com/net/download/dotnet-core/2.1三. 指定項目使用的 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版本來解決了。操作如下:
在項目的根目錄打開cmd,執行指令即可:
dotnet new global.json --sdk-version <SDK版本号>
要注意的是最後的參數是SDK版本,不是.NET Core 版本,可參照上表。
可在項目根目錄執行指令來檢查,看看是否與設定的SDK版本号一緻:
dotnet --version
操作示範:

global.json 檔案内容:
{
"sdk": {
"version": "2.1.300"
}
}