Visual Studio 2019无法显示.NET 6框架。

77
我一直在努力将一个使用.NET 5目标框架启动的ASP.NET Core Web API项目的目标框架更改为.NET 6。我已经尝试了几个选项,但在目标下拉菜单中找不到.NET 6框架的列表。
以下是我的情况: 1. 我正在使用Microsoft Visual Studio Enterprise 2019版本16.11.3。 2. 我已安装.NET 6.0.0-rc.2.21480.5,通过dotnet --version验证过。 3. 启用了"使用.NET Core SDK的预览版本",并重新启动了程序。 4. 多次重启工作站,但仍然没有运气。

7
.NET 6 支持在 Visual Studio 2022 中使用。 - Panagiotis Kanavos
15个回答

63
.NET 6及更高版本在Visual Studio 2019中不受支持。你可以通过手动编辑项目文件来使其工作,但为了获得完全支持的体验,建议升级到Visual Studio 2022。

谢谢。我更新了VS2019并安装了.NET 6非预览版,但在VS2019中创建新项目时只有.NET 6预览版可用。 - Dave Pile

38
你不需要使用下拉菜单 - 打开你的.csproj文件并手动更改目标框架。
<TargetFramework>net6.0</TargetFramework>

关于下拉菜单 - 看起来在VS中有一些bug - 我已经安装了16.11.5版本的VS 2022预览版,并启用了“使用.NET Core SDK的预览”标志,即使是使用.NET 6构建和运行的项目(通过VS2019)。此外,尽管项目属性中缺少.NET 6,但新项目向导中有它。
Visual Studio 2019 不支持 .NET 6(还请参阅发布说明中的VS支持)。安装VS 2022以获得完整的.NET 6支持。

谢谢您的回复!我也尝试过了,但是构建失败了,并显示“NETSDK1045:当前 .NET SDK 不支持 'newer version' 作为目标”的错误消息! - Yasir Arafat
@YasirArafat,请在您的项目中检查global.json文件。同时尝试从控制台运行dotnet build命令。 - Guru Stron
@YasirArafat 也可以尝试安装2022的预览版本(并尝试从VS 2019构建)-也许这会有所帮助。 - Guru Stron
没有global.json文件。dotnet build 命令成功了,但解决方案无法运行!此外,我发现新的信息是 NETSDK1182:不支持在Visual Studio 2019中针对.NET 6.0进行目标设置!已经安装了2022 RC3版本! - Yasir Arafat
这个可以工作,但是无法从VS2019中启动ASP.NET 6项目,应用程序会抛出“InvalidOperationException:未找到视图'Index'”。这是因为.NET 6编译razor视图的方式有所改变。 - Alex from Jitbit

10
要使Visual Studio 2019与.NET 6配合使用,您只需按照以下步骤操作:
  • 安装.NET 6 SDK: https://dotnet.microsoft.com/download
  • 打开你想要切换到.NET 6的VS项目
  • 使用.NET 5(+)构建你的项目
  • 进入项目目录,找到你的项目文件:.csproj
  • 用记事本或Notepad++等文本编辑器打开项目文件,找到节点:<TargetFramework>
  • 如果你使用.NET 5(+)构建了项目,它会显示为:<TargetFramework>net5.0-windows</TargetFramework>
  • 只需将值更改为:net6.0-windows 将5改为6
  • 你的TargetFramework条目应该被修改为:<TargetFramework>net6.0-windows</TargetFramework>
  • 现在保存你的项目文件
  • 接下来,简单地启动Visual Studio 2019和你刚刚修改的目标项目以运行.NET 6。
  • 在[构建]菜单项下对你的项目进行清理
  • 现在重新构建你的项目,然后就可以开始了 \m/ :) \m/
请注意,我正在使用Windows平台的示例,相同的概念应该适用于Linux等其他平台,只需查看<TargetFramework>中.NET 5节点的样式,并将其中的5替换为6,并保留值中的任何其他文本。除了Windows之外,我还没有尝试过其他平台,但我相信它也会正常工作。
我已经在Visual Studio 2019上测试了各种项目和复杂项目,.NET 6在所有情况下都完美运行!

4
这似乎不再起作用了?我在VS2019中明显出现了一个错误:“在Visual Studio 2019中,不支持针对.NET 6.0进行目标设置。”这很遗憾,因为目前VS2022在Blazor项目方面存在严重问题。 - Mmm
4
经测试,使用版本16.11.9,应用可以正常构建和启动。我收到了类似的警告,但没有错误。 警告NETSDK1182:不支持在Visual Studio 2019中针对.NET 6.0进行目标设置。 - Jos
VS 2019 16.11.10 给出了一个稳定的错误。 - Steve
VS 16.11.106 x86:有很多警告,但似乎工作正常。 - Xan-Kun Clark-Davis

7
问题不在于Visual Studio的版本,而是使用的.NET 6 SDK的版本。根据Microsoft官网的说明:
NETSDK1182警告在.NET SDK 6.0.300版本中被转换为严重错误(适用于.NET 6.0.5运行时,Visual Studio 17.2)。因此,请不要使用6.0.3xx SDK分支(看起来对于6.0.4xx等也是正确的)。
6.0.2xx SDK分支已经不再受支持(自从Visual Studio 17.1不再受支持),但6.0.1xx SDK分支仍然得到支持(自从Visual Studio 17.0支持至2023年4月11日)。
最新版本是.NET SDK 6.0.109(适用于最新的.NET 6.0.9运行时),通过它,Visual Studio 2019可以编译、运行和调试某些类型的.NET 6.0应用程序:类库、控制台、WinForms和WPF。ASP .NET Core应用程序无法编译,但不是因为NETSDK1182。测试使用了最新的Visual Studio 2019 16.11.19版本。
解决方案是安装并使用.NET 6 SDK版本6.0.2xx或更低版本。然后,这里发布的所有旧解决方案都将正常工作。

2
这应该有最多的赞,不知道为什么!!! - learning...

6
更新Visual Studio到16.11.7版本解决了我的问题。
但首先你必须勾选复选框:工具 > 选项 > 环境 > 预览功能 > 使用 .Net SDK 预览版(需要重新启动)

3

2

可能的另一个原因是存在一个global.json文件,我忘记了我们有这个文件,它阻止了.NET 5/6出现在下拉菜单中。当我将其指向新版本进行修复后,它就出现了。


这是我的问题。我的 global.json 指向了 3.1.0 .net core,而不是 {   "sdk": {     "version": "6.0.300"   } } - tvb108108

2

2
.NET SDK 6.0.100与Visual Studio 2019 v16.10.3几乎可以正常工作,但微软声称它只适用于VS 2022。理论上,更新的版本也应该可以工作,但有些人表示在VS 16.11.10附近或最新的.NET 6.0.x SDK中出现了故障(如果不是,请纠正我)。我目前还没有检查。
要将目标.NET运行时版本设置为6.0,请直接在项目的.csproj文件中输入net6.0版本。这将为项目属性窗口中的下拉列表提供空行,但是,无论如何,该项目都将构建为.NET 6.0。这也意味着所有最初为.NET 6编写的项目也应该能够在VS 2019上打开(如果它们不使用新的C# 10功能)。
在Visual Studio下构建项目时(而不是通过dotnet命令行),它将添加警告NETSDK1182:在Visual Studio 2019中针对.NET 6.0的目标不受支持的消息。它不会破坏编译和调试,但也可以轻松地避免。再次打开.csproj文件,并将$(NoWarn);NETSDK1182添加到PropertyGroup中。

1

对我来说,问题出在c:\Program Files (x86)\文件夹中32位(!)的dotnet.exe安装。

我做了什么?

  • 作为诊断步骤,我运行了dotnet --list-sdks,结果没有列出任何内容。
  • 尽管我确信我有dotnet sdks(我每天都在使用.NET,并且现在安装了VS 2022,怎么可能没有任何SDK呢?
  • 无论如何,我安装了最新版本的.NET 6 SDK。
  • 作为诊断步骤,我再次运行了dotnet --list-sdks,但是仍然没有列出任何内容
  • 我运行了where dotnet.exe,结果发现它来自于c:\Program Files (x86)\...
  • 重命名32位版本的文件夹,问题解决了。

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