代码之家  ›  专栏  ›  技术社区  ›  Robert Hegner

当前的.NET SDK不支持以.NET Core 2.1.3为目标

  •  1
  • Robert Hegner  · 技术社区  · 6 年前

    我想确保我的应用程序是基于.NETCore2.1.3构建的,所以我安装了SDK的2.1.401版本并设置了 TargetFrameworkVersion 项目的 2.1.3

    C:\程序文件\dotnet\sdk\ \SDK\Microsoft.NET.Sdk\目标\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不受支持。这对我来说没有意义。。。

    这里可能有什么问题?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Uwe Keim Chand    5 年前

    您不能设置 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>

    如果打开“managenuget Packages”对话框并查看metapackages的版本,可以检查此更改的效果 Microsoft.NETCore.App

    <RuntimeFrameworkVersion> 是的 2.1.0 ,否则应该是 .

    例如,如果要构建一个自包含的应用程序,必须指定 <RuntimeIdentifier> 2.1.3 因为它会的 publish the highest patch runtime

    也就是说,我不建议设置任何 <RuntimeFrameworkVersion> 大部分是手动操作。

    从.NET Core 2.1开始,所有依赖于框架的应用程序(使用.NET Core 2.0或更高版本构建) will automatically roll forward 最新消息 如果系统上不存在运行时的原始版本,则安装的版本。

    因此,如果目标系统上只安装了.NET Core 2.1.3,则依赖于框架的.NET Core 2.1.0应用程序将自动使用该运行时和框架。

    您可以阅读更多关于.NET核心版本选择机制的内容 here .

        2
  •  1
  •   Ignatius    5 年前

    我也有同样的问题,当时正在使用VisualStudio2017,并安装了最新的.net sdk(发布2.2.401时)。 Installing sdk 2.2.107 我的问题。

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

    另请参见 this related post 在visualstudio开发者社区论坛上。