sdk - 当前的 .NET SDK 不支持面向 .NET Core 2.1.3
问题描述
我想确保我的应用程序是针对 .NET Core 2.1.3 构建的,因此我安装了 SDK 的 2.1.401 版本并将TargetFrameworkVersion
项目的2.1.3
.
这给了我以下错误消息(强调我的):
C:\Program Files\dotnet\sdk\ 2.1.401 \Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(137,5): error NETSDK1045: The current .NET SDK does not support targets 。 NET 核心 2.1.3。以 .NET Core 2.1 或更低版本为目标,或者使用支持 .NET Core 2.1.3 的 .NET SDK 版本。
所以有趣的是,构建似乎使用了新安装的 SDK (2.1.401)——它应该支持 .NET Core 2.1.3——但它仍然抱怨不支持 .NET Core 2.1.3。这对我来说没有意义...
这里有什么问题?
解决方案
(对于我的回答,我假设您正在构建一个依赖于框架的应用程序,而不是一个独立的应用程序。)
不能2.1.3
直接设置为<TargetFramework>
in ,.csproj
因为只是补丁版本不同而已。
只允许以下条目:https
://docs.microsoft.com/en-us/dotnet/standard/frameworks
所以在你的情况下.csproj
需要有<TargetFramework>netcoreapp2.1</TargetFramework>
.
但正如 Damir 在评论中指出的那样,如果您还添加<RuntimeFrameworkVersion>2.1.3</RuntimeFrameworkVersion>
到<PropertyGroup>
.
如果打开“管理 NuGet 包”对话框并查看Microsoft.NETCore.App
隐式使用的元包的版本,则可以检查此更改的效果。
没有<RuntimeFrameworkVersion>
it's 2.1.0
,否则它应该是2.1.3
。
但除此之外,有时还有其他因素会隐含地决定正在使用的版本。
例如,如果你想构建一个独立的应用程序,你必须指定<RuntimeIdentifier>
哪个也会强制框架版本,2.1.3
因为它会自动在你的机器上发布最高的补丁运行时。
也就是说,我不建议<RuntimeFrameworkVersion>
在大多数情况下手动设置任何内容。
从 .NET Core 2.1 开始,如果系统上不存在运行时的原始版本, 所有依赖于框架的应用程序(使用 .NET Core 2.0 或更高版本构建)将自动前滚到安装的最新次要版本。
因此,如果您在目标系统上仅安装了 .NET Core 2.1.3,则依赖于框架的 .NET Core 2.1.0 应用程序将自动使用该运行时和框架。
您可以在此处阅读有关 .NET Core 版本选择机制的更多信息。
推荐阅读
- import - 自动将 Visio 图表导入 draw.io(使用 api,使用脚本..)
- dependencies - LibreOffice Calc:展平公式依赖关系
- python-3.x - 在 Windows 中使用 ValueError 运行 Python 脚本:列的长度必须与键的长度相同
- google-sheets - 填写的所有单元格的 Google Sheet 范围
- c++ - 当包含指针的数组是方法的参数时,为什么数组长度会发生变化?
- python - 无法导入已安装的 azure.core 模块
- python - 从列表 python3 中删除引号
- swift - iOS:当信标处于睡眠模式时检测信标?
- javascript - jQuery匹配整个站点元素的高度,而不仅仅是元素的每个页面实例
- selenium - 根据表格行中另一个元素的值查找一个元素的 Xpath