一. 版本里的坑
自从 .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.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.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"
- }
- }
来源: https://www.cnblogs.com/stulzq/p/9503121.html