天天看點

.NET Core 項目指定SDK版本

一. 版本裡的坑

自從 .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           

操作示範:

.NET Core 項目指定SDK版本

global.json 檔案内容:

{
  "sdk": {
    "version": "2.1.300"
  }
}