当前的.NET SDK不支持定位.NET Core 2.1.3

时间:2018-09-05 07:18:51

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

我想确保我的应用程序是根据.NET Core 2.1.3构建的,因此我安装了SDK版本2.1.401,并将项目的TargetFrameworkVersion设置为2.1.3。 / p>

这会给我以下错误消息(重点是我):

  

C:\ Program Files \ dotnet \ sdk \ 2.1.401 \ Sdks \ Microsoft.NET.Sdk \ targets \ Microsoft.NET.TargetFrameworkInference.targets(137,5):错误NETSDK1045: 当前的.NET SDK不支持定位.NET Core 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 个答案:

答案 0 :(得分:1)

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

您不能直接将2.1.3设置为<TargetFramework>中的.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>,则为2.1.0,否则应为2.1.3

但是除此之外,有时还有其他因素也会隐式确定所使用的版本。
例如,如果要构建独立的应用程序,则必须指定<RuntimeIdentifier>,这也会强制将框架版本设置为2.1.3,因为它将自动在您的计算机上publish the highest patch runtime。 / p>

也就是说,在大多数情况下,我不建议手动设置任何<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的更多信息。

答案 1 :(得分:0)

我遇到了同样的问题,当时使用的是Visual Studio 2017,并且安装了最新的.net sdk(发布于2.2.401时)。 Installing sdk 2.2.107并将其添加到global.json文件(我将其作为项目根目录)已解决 对我来说是个问题。

{
  "sdk": {
    "version": "2.2.107"
   }
}

另请参阅Visual Studio开发者社区论坛上的this related post