当前的 .NET SDK 不支持面向 .NET Core 2.1.3
The current .NET SDK does not support targeting .NET Core 2.1.3
我想确保我的应用程序是针对 .NET Core 2.1.3 构建的,所以我安装了 2.1.401 版本的 SDK 并将项目的 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 targeting .NET Core 2.1.3. Either target .NET Core 2.1 or lower, or use a version of the .NET SDK that supports .NET Core 2.1.3.
所以有趣的是,构建似乎使用了新安装的 SDK (2.1.401) - 它应该支持 .NET Core 2.1.3 - 但它仍然抱怨 .NET Core 2.1.3不支持。这对我来说没有意义...
这里有什么问题吗?
(对于我的回答,我假设您正在构建一个依赖于框架的应用程序,而不是一个独立的应用程序。)
不能直接将2.1.3
设置为.csproj
中的<TargetFramework>
,因为只是补丁版本不同而已。
只允许以下条目:https://docs.microsoft.com/en-us/dotnet/standard/frameworks
所以在你的情况下 .csproj
需要有 <TargetFramework>netcoreapp2.1</TargetFramework>
.
但正如 Damir 在评论中指出的那样,如果您还将 <RuntimeFrameworkVersion>2.1.3</RuntimeFrameworkVersion>
添加到 <PropertyGroup>
,则可以强制使用该版本。
如果您打开 "Manage NuGet Packages" 对话框并查看隐式使用的元数据包 Microsoft.NETCore.App
的版本,您可以检查此更改的效果。
没有 <RuntimeFrameworkVersion>
就是 2.1.0
,否则应该是 2.1.3
.
但除此之外,有时还有其他因素会隐式确定所使用的版本。
例如,如果您想构建一个独立的应用程序,您必须指定 <RuntimeIdentifier>
,这也会强制框架版本为 2.1.3
,因为它将 publish the highest patch runtime你的机器自动。
也就是说,我不建议在大多数情况下手动设置任何 <RuntimeFrameworkVersion>
。
从 .NET Core 2.1 开始,所有依赖于框架的应用程序(使用 .NET Core 2.0 或更高版本构建)will automatically roll forward 到最新的 minor 版本如果系统上不存在运行时的原始版本,则安装。
因此,如果您只在目标系统上安装了 .NET Core 2.1.3,则依赖于框架的 .NET Core 2.1.0 应用程序将自动使用该运行时和框架。
您可以阅读更多有关 .NET Core 版本选择机制的内容 here。
我遇到了同样的问题,当时使用的是 visual studio 2017 并安装了最新的 .net sdk(在 post 2.2.401 时)。 Installing sdk 2.2.107 并将其添加到 global.json 文件(我有我的项目根目录)解决了
我的问题。
{
"sdk": {
"version": "2.2.107"
}
}
另请参阅 visual studio 开发者社区论坛上的 this related post。
我想确保我的应用程序是针对 .NET Core 2.1.3 构建的,所以我安装了 2.1.401 版本的 SDK 并将项目的 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 targeting .NET Core 2.1.3. Either target .NET Core 2.1 or lower, or use a version of the .NET SDK that supports .NET Core 2.1.3.
所以有趣的是,构建似乎使用了新安装的 SDK (2.1.401) - 它应该支持 .NET Core 2.1.3 - 但它仍然抱怨 .NET Core 2.1.3不支持。这对我来说没有意义...
这里有什么问题吗?
(对于我的回答,我假设您正在构建一个依赖于框架的应用程序,而不是一个独立的应用程序。)
不能直接将2.1.3
设置为.csproj
中的<TargetFramework>
,因为只是补丁版本不同而已。
只允许以下条目:https://docs.microsoft.com/en-us/dotnet/standard/frameworks
所以在你的情况下 .csproj
需要有 <TargetFramework>netcoreapp2.1</TargetFramework>
.
但正如 Damir 在评论中指出的那样,如果您还将 <RuntimeFrameworkVersion>2.1.3</RuntimeFrameworkVersion>
添加到 <PropertyGroup>
,则可以强制使用该版本。
如果您打开 "Manage NuGet Packages" 对话框并查看隐式使用的元数据包 Microsoft.NETCore.App
的版本,您可以检查此更改的效果。
没有 <RuntimeFrameworkVersion>
就是 2.1.0
,否则应该是 2.1.3
.
但除此之外,有时还有其他因素会隐式确定所使用的版本。
例如,如果您想构建一个独立的应用程序,您必须指定 <RuntimeIdentifier>
,这也会强制框架版本为 2.1.3
,因为它将 publish the highest patch runtime你的机器自动。
也就是说,我不建议在大多数情况下手动设置任何 <RuntimeFrameworkVersion>
。
从 .NET Core 2.1 开始,所有依赖于框架的应用程序(使用 .NET Core 2.0 或更高版本构建)will automatically roll forward 到最新的 minor 版本如果系统上不存在运行时的原始版本,则安装。
因此,如果您只在目标系统上安装了 .NET Core 2.1.3,则依赖于框架的 .NET Core 2.1.0 应用程序将自动使用该运行时和框架。
您可以阅读更多有关 .NET Core 版本选择机制的内容 here。
我遇到了同样的问题,当时使用的是 visual studio 2017 并安装了最新的 .net sdk(在 post 2.2.401 时)。 Installing sdk 2.2.107 并将其添加到 global.json 文件(我有我的项目根目录)解决了 我的问题。
{
"sdk": {
"version": "2.2.107"
}
}
另请参阅 visual studio 开发者社区论坛上的 this related post。