无法在 VS2019 中选择 .NET 5 作为目标框架,未找到引用程序集

use*_*669 3 .net installation visual-studio .net-core .net-5

我无法让 Visual Studio 使用.NET 5

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

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

在此处输入图片说明

Visual Studio 设置: 我在 VS 中选择了“使用 .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. 选择“创建一个新项目”
  3. 选择“Blazor 应用程序”
  4. 为项目命名/位置/解决方案名称,然后单击“创建”
  5. 选择.Net 5.0(也可以使用 .net core 3.1)和 Blazor Server App,然后单击“创建”(见图) 在此处输入图片说明

6.项目现已创建,但立即显示错误消息“未找到 .NETFramework 的参考程序集,版本 = v5.0。...”(见图) 在此处输入图片说明

7. 右键单击​​项目 -> 属性 8. “目标框架”现在是空白的,如果我打开下拉菜单,只有 .Net 框架版本可用(见图) 在此处输入图片说明

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

在此处输入图片说明

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

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

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

#Update 1: 安装 Visual Studio 16.8.0 Preview 5.0 后,问题仍然存在,无法使用 .NET 5。如果我查看依赖项,很明显有问题,依赖项 -> 程序集下的条目都没有找到/具有值(见图)

在此处输入图片说明

#Update 2: 最终使用 global.json 找到了解决方案 4 这个问题,更多细节见我自己的答案

use*_*669 10

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

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

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

在此处输入图片说明

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

编辑#1:

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


小智 7

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