.NET 5 无法被选为 VS2019 中的目标框架,找不到参考程序集

.NET 5 cant be selected as Target Framework in VS2019, reference assemblies not found

我无法让 Visual studio 使用 .NET 5.

以下是我目前的配置: Visual Studio专业版2019版本:16.7.6

.NET sdk: dotnet-sdk-5.0.100-preview.7.20366.6-win-x64 (有关详细信息,请参见图片)

Visual Studio 设置: 我在 VS 中 select编辑了“使用 .NET Core SDK 的预览”(见图)

我的问题的可能来源: 我不小心安装了 .NET 5 的预览版 8,这个版本不支持我的 Visual Studio 版本。我删除了这个版本并安装了正确的 (预览版 7 应该支持 VS 16.7,请参阅:https://dotnet.microsoft.com/download/dotnet/5.0

这些是我重现我的问题所采取的步骤:

在 visual studio 我执行以下操作来创建一个 .net 5 项目(blazor 项目):

  1. 开始与 2019 年
  2. select“创建一个新项目”
  3. select“Blazor 应用”
  4. 为项目起一个 name/Location/solution 名称并单击“创建”
  5. select .Net 5.0(.net core 3.1 也可用)和 Blazor Server App,然后单击“创建”(见图)

6.the 项目现已创建,但立即显示错误消息“找不到 .NETFramework 的参考程序集,版本 =v5.0。...”(见图)

7.right点击项目->属性 8.“目标框架”现在是空白的,如果我打开下拉列表,只有 .Net 框架版本可用(见图)

其他可能有价值的信息: 如果我创建一个新项目并且 select .Net core 3.1 而不是 .net 5 一切正常。 这样做可以让我在“目标框架”下拉列表中看到 .Net 框架以外的项目,但是 .NET 5 仍然缺失。 (见图)

如果我转到“添加或删除程序”,则会列出正确版本的 .Net 5。 (也是唯一列出的.NET 5版本)

如果我查看系统路径,它被正确设置为:"C:\Program Files\dotnet"

为什么会这样?我怎样才能使 .net 5 正确显示在此列表中?

#更新 1: 安装Visual studio 16.8.0 Preview 5.0 问题依旧.NET 5无法使用。如果我查看 Dependencies,很明显有些地方出了问题,Dependencies -> Assemblies 下的所有条目都不是 found/has 值(见图)

#更新 2: 终于找到解决方案 4 这个问题使用 global.json,请参阅我自己的答案以获取更多详细信息

其实在我这边,并没有遇到同样的错误。

所以很奇怪。恐怕你的NET5、VS或OS环境有一些错误。

因此,请尝试按照以下步骤进行故障排除:

建议

1) 禁用 Extensions-->[=下安装的任何第三个扩展40=]管理扩展-->已安装

2)删除C:\Users\xxx(current user)\AppData\Local\Microsoft\VisualStudio.0_xxx\ComponentModelCache

下的所有组件模型缓存

3)重置工具下的所有vs设置--->导入和导出设置-->重置所有设置

4)打开控制面板-->程序-->程序和功能-->卸载程序--> Right-click Microsoft .NET SDK 5.0.100-preview.7.20366(x64)-->更改-->修复

5) repair VS on the vs_installer

终于找到了解决这个问题的方法。由于 VS 不知何故失去了它应该使用什么 .Net 版本的轨道,我需要“强制”程序使用预期的版本。这需要在 “每个解决方案的基础” 上完成,并通过将 global.json 文件添加到解决方案的根目录来完成其中包含有关所需确切版本的信息。

这可以通过以下方式完成:

  1. 在 VS 中打开查看 -> 终端并输入:dotnet new globaljson
  2. 打开解决方案的根文件夹并编辑新创建的文件“global.json” 必须输入安装的 .net 版本的确切名称,才能找到 运行 打开的 CMD 和 运行 dotnet --version (或者 dotnet --info 如果你有多个条目,需要找到一个特定的条目)
  3. 将正确的版本添加到global.json文件中,保存文件并重启VS(下图是我的global.json的样子)

这样做解决了我的问题,VS 现在可以正确找到我的 .Net 5 安装。这也让我可以 VS 2019 版本 16.7.6.net 5.0 预览 7(不需要 VS 预览)。 值得一提的是,原post中提到的VS设置“Use previews of .net Core”仍然需要激活(在non-preview VS 版本)

编辑#1:

您可以在此处找到有关 global.json 的更多信息: https://docs.microsoft.com/en-us/dotnet/core/tools/global-json?tabs=netcore3x

编辑#2:.net 6

同一台机器在转到 .net 6 时遇到了完全相同的问题,旧版本在 vs22 中显示但在 .net 6 中没有显示。使用 global.json 以 .net6 为目标可以解决这个问题。

您必须升级您的 VS 版本。 .NET 5 与 Visual Studio 的 16.8 版兼容。如果您使用的是 VSCode,请使用 global.json 文件指定您要使用的 dotnet 版本。

将现有项目升级到下一版本时也会发生这种情况。从 netcoreapp3.1 升级到 net5.0 时,在 VS2019 版本 16.11.2 上没有 global.json 时出现此问题。

不知何故 visualstudio 仍在使用 netcoreapp3.1 sdk,唯一解决它的是将 global.json 引入解决方案。