【问题标题】:.NET 5 cant be selected as Target Framework in VS2019, reference assemblies not found.NET 5 无法在 VS2019 中选择为目标框架,未找到引用程序集
【发布时间】:2020-10-26 15:22:03
【问题描述】:

我无法让 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 的参考程序集,未找到 Version=v5.0。...”(见图)

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

其他可能有价值的信息: 如果我创建一个新项目并选择 .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 下的条目都没有找到/具有值(见图)

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

【问题讨论】:

  • Afaik,.NET 5 仅在 VS 16.8 中可用,因此您应该安装最新的 16.8 预览版而不是 16.7
  • @PavelAnikhouski 这是我发布的关于 .net 5 prev 7 VS 支持的链接:“Visual Studio 支持:Visual Studio 2019(v16.7,最新预览版)”,如您所见 v16 .7 在这里列出。链接:dotnet.microsoft.com/download/dotnet/5.0
  • @user10483669 不,不是。 Visual Studio support: Visual Studio 2019 (v16.8, Preview 4) 最新的 .NET 5 版本 RC2 在最新的 VS 16.8 预览版中得到支持。升级你的 VS 版本。 RC 版本具有上线许可和生产支持。您正在使用不受支持的版本。升级到支持的版本
  • @user10483669 此外,在 1 周内,当 .NET 5 发布时,您将无论如何都必须升级。为什么要解决已经解决的不兼容问题?
  • @PanagiotisKanavos 为什么要列出 v16.7 非预览版呢?可能支持使用错误的词,兼容可能会更好,因为这两个版本确实兼容。

标签: .net visual-studio .net-core installation .net-5


【解决方案1】:

终于找到了解决这个问题的办法。由于 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 preview 7(不需要 VS 预览)。 值得一提的是,原帖中提到的VS设置“使用.net Core的预览版”仍然需要激活(在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 没有丢失版本,您使用的是不兼容和 不支持 的版本。唯一具有 Go-Live 许可证的 .NET 5 版本 5.0 RC1 和 RC2 需要最新的 VS 16.8 预览版
  • 不,我没看错。它也不是隐藏在下载页面中的东西,这已经在 6 个多月前宣布,在博客文章、公告、会议中一遍又一遍地解释。您列出的页面说支持的版本是 RC。再说一遍,你为什么坚持使用下周必须丢弃的不支持的版本
  • @PanagiotisKanavos 我在 3 台不同的机器上运行此设置,只有我不小心首先安装了错误版本的那台有任何问题,另外两台一直在“开箱即用”
  • 所以你说.NET Core 团队不知道他们在做什么,甚至不知道他们在支持什么?
  • @PanagiotisKanavos 然后请给我一个链接,指出这些版本不兼容(VS v16.7 和 SDK 5.0.100-preview.7)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    所以请尝试以下步骤进行故障排除:

    建议

    1) 禁用Extensions-->Manage Extensions-->已安装。

    2)删除C:\Users\xxx(current user)\AppData\Local\Microsoft\VisualStudio\16.0_xxx\ComponentModelCache下的所有组件模型缓存

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

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

    5) repair VS on the vs_installer

    【讨论】:

    • 按照这些说明没有任何成功,问题仍然存在。还有其他想法吗?
    • 也许你可以尝试删除文件夹C:\Users\xxx(current user)\AppData\Local\Microsoft\VisualStudio\16.0_xxx
    • 我安装了 VS prev 仍然报同样的错误,好像 VS 认为 TFM 'net5.0' 是 .net framework 5 而不是 .net core 5
    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 2020-05-30
      • 2010-11-22
      • 1970-01-01
      • 2021-04-01
      • 2021-09-14
      相关资源
      最近更新 更多