首页 > 解决方案 > 当前的 .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。这对我来说没有意义...

这里有什么问题?

标签: sdk.net-core.net-core-2.1

解决方案


(对于我的回答,我假设您正在构建一个依赖于框架的应用程序,而不是一个独立的应用程序。)

不能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 版本选择机制的更多信息。


推荐阅读