目前的.NET SDK不支持针对.NET 6.0的目标。要么将目标设置为.NET 5.0或更低版本,要么使用支持.NET 6.0的.NET SDK版本。

59

我知道这是一个重复的问题。但是我已经尝试了所有提到的解决方案,都没有解决问题。

我有一个dotnet c#应用程序。当我运行应用程序时,我得到了下面提到的错误:

当前的.NET SDK不支持针对.NET 6.0的目标。要么针对.NET 5.0或更低版本进行目标设置,或使用支持.NET 6.0的.NET SDK版本。

我已经尝试了以下所有解决方案:

  1. 下载和安装dotnet-SDK-6.0.300版本。
  2. 更新了VS-2019并选中了“使用.NET SDK的预览版(需要重新启动)”。

Windows版本:Windows 11

仍然无法解决。仍然得到相同的错误。请帮我解决这个问题。


1
我也遇到了这个问题,做了相同的事情,得到了相同的结果。在我的情况下,我正在尝试构建ImGui.NET的克隆版本。 - Bryan Edds
@BryanEdds 请查看此问题的已验证答案以获取解决方案。 - jithu
通常发生在 global.json 的版本比 csproj 中指定的版本低的情况下。 - J Santosh
10个回答

112

.NET 6支持Visual Studio 2022和Visual Studio 2022 for Mac,不支持Visual Studio 2019,Visual Studio for Mac 8或MSBuild 16。如果你想使用.NET 6,你需要升级到Visual Studio 2022(现在也是64位)。


20
我正在使用 Visual Studio 2022 for Mac 17.0.2,并仍然遇到问题。这是一个我们刚从5升级到6的大型项目。我的目标框架: <TargetFrameworks>net6.0</TargetFrameworks>我的 global.json 文件如下: { "sdk": { "version": "6.0.300" } } - whendon
9
为了更清楚地描述我的经历,我在我的机器上安装了VS2022和VS2019,并且在2022中创建了该项目。但是当我双击打开sln文件时,它却在2019中打开了。我没有意识到这一点,因此遇到了这个问题中的错误提示。请注意,以上内容已被翻译成中文,无需解释或添加其他内容。 - John Koerner
我有VS 2019和VS 2022,使用VS 2022构建成功,但在VS 2019上失败。我是Windows 11用户。安装VS 2022解决了我的问题。感谢@jithu的答案。 - Dodda Venkata
我在使用VisualStudio 2022和.net 8预览版时遇到了同样的问题,将VS更新到最新版本解决了该问题。 - Mohammad Taherian
在我的情况下,我在电脑上同时安装了VS2019和VS2022,然后我错误地启动了VS2019。两个环境看起来一样,所以我花了半个小时才弄清楚这个简单的问题! - undefined
显示剩余2条评论

9
我在将一个项目从.NET 5升级到.NET 6时遇到了这个问题,使用的是Visual Studio 2022。
在我的情况下,问题出在存在一个global.json文件来固定SDK版本:
{
  "sdk": {
    "version": "5.0.0",
    "rollForward": "latestMinor"
  }
}

只需将该文件更新为6.0.0,错误便已消失。


当我尝试从5迁移到6时,这也困扰了我。我不确定这个文件来自哪里,因为它没有被检入源代码控制。删除该文件可以让我构建针对5、6和7的版本。到目前为止,该文件还没有重新创建。 - nitz
已经放弃了。IDE 在目标框架字段中没有显示 .NET 6.0。我甚至重新安装了框架。 - Joseph Waweru
如果您仍然遇到错误,请在更改Visual Studio终端窗口后执行dotnet tool restore。对我有效。 - Ashley

7

.NET 6支持Visual Studio 2022和Visual Studio 2022 for Mac,不支持Visual Studio 2019。如果您想使用.NET 6,则需要升级到Visual Studio 2022。

以下是微软社区的官方公告。 enter image description here


5

如果您正在尝试设置Docker,请打开您的“.csproj”文件,并将目标框架版本更改为与您的Dockerfile中的版本相同。

<PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <DockerfileContext>..\..\..</DockerfileContext>
</PropertyGroup>

没有看到其他评论,但是一个字符的更改似乎是最有效的,干得好。 - Patrick Ruff

2

在 AWS CodeBuild 上,如果你想要运行(AWS 目前不支持).NET 7.0,请使用这个 Buildspec。通道需要是 STS。

phases:
  install:
    commands:
      - /usr/local/bin/dotnet-install.sh --channel STS

  build:
    commands:
      - dotnet restore
      - dotnet build --configuration Release BackendApi.csproj
      - dotnet publish --configuration Release BackendApi.csproj --output ./publish

1

我发现了一个有趣的解决办法。 我已经检查了所有上面的说明,使用VS 2022,安装了.Net 6,进行了更新,但仍然存在问题,然后我检查了我的Dockerfile,并发现了一个有趣的原因,即指向错误的.net版本,但我通过项目属性将.net版本从5设置为6。在docker文件中,我只是将其指向基础的.net 6,然后构建正常工作了。

示例基础和构建.net 6命令

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
and for build
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build

我遇到了同样的问题。我从我的旧项目中复制了文件,在那个项目中我使用的是.NET Core 5.0,而在新的项目中我使用的是7.0版本。所以我不得不更新版本,然后它开始正常工作了。 - Mukesh Salaria

1
只是为了补充另一个可能发生的原因。 在我们的情况下,确实安装了正确的 SDK,确实正确地进行了目标定位,甚至有一个包含正确 SDK 版本的 global.json 文件也没有起作用。global.json 文件确实被找到,但被忽略了。 这是在一个构建服务器上发生的。
结果发现,有人定义了一个环境变量。
MSBuildSDKsPath=C:\Program Files\dotnet\sdk\5.0.402\Sdks

...而dotnet固执地想要使用那个SDK。 我在任何地方都没有找到相关的文档。 取消设置环境变量就解决了问题。

微软将此环境变量列为SDK错误的官方可能原因之一:https://learn.microsoft.com/en-us/dotnet/core/tools/sdk-errors/netsdk1045?f1url=%3FappId%3DDev16IDEF1%26l%3DEN-US%26k%3Dk(NETSDK1045)%26rd%3Dtrue - undefined

0
我在从.NET 5升级到6后构建Docker镜像时遇到了相同的问题。我通过创建新的Docker镜像并重新构建来解决了这个问题。

0

刚从vs2019升级到vs2022,就遇到了这个错误。重启了一下我的工作站,然后错误就消失了。


另外,我遇到了这个错误,并意识到我打开的是 VS 2019 而不是 2022 - 用户错误。 - TonyE

0

对我来说,我不小心勾选了"使用 MSBuild 在 Mono 上构建"复选框。

这位于解决方案属性 > 构建 > 通用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接