自从 .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版本,这可谓是一个坑。shell
.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.1json
前几天 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版原本解决了。操做以下:code
在项目的根目录打开cmd,执行命令便可:blog
dotnet new global.json --sdk-version <SDK版本号>
要注意的是最后的参数是SDK版本,不是.NET Core 版本,可参照上表。开发
可在项目根目录执行命令来检查,看看是否与设置的SDK版本号一致:get
dotnet --version
操做演示:cmd
global.json 文件内容:io
{ "sdk": { "version": "2.1.300" } }