错误 CS8773:从 net6.0 降级到 net5.0 后,“功能‘全局使用指令’在 C# 9.0 中不可用”

Yur*_*hov 100 c# visual-studio .net-core .net-5 .net-6.0

我有一个最初是为 .NET 6 创建的项目,但后来我需要将其降级到 .NET 5。我在项目属性中更改了目标框架并尝试编译。结果我收到了一堆错误:

GlobalUsings.g.cs(2,1,2,29): error CS8773: Feature 'global using directive' is not available in C# 9.0. Please use language version 10.0 or greater.
Run Code Online (Sandbox Code Playgroud)

文件 GlobalUsings.g.cs 是自动创建的,并且每次编译后都会重新出现。

Yur*_*hov 231

最后我发现原因是项目文件中的一个额外属性ImplicitUsings不受.net 5.0支持。

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

我需要从文件中删除ImplicitUsings 。

  • 它有效..谢谢...我根据您的诊断将我的框架改回 **net6.0** (3认同)
  • 奇怪的是,我使用 **.Net 6** 也遇到了这个错误,并删除 `ImplicitUsings` 也修复了它。 (3认同)

小智 19

在csproj工程文件中删除<ImplicitUsings>enable</ImplicitUsings>即可构建成功

从这里找到这个解决方案


Thi*_*imm 12

删除标签确实有效。
但只要改变它的值也能达到目的!

<ImplicitUsings>disable</ImplicitUsings>


小智 9

为了消除由于降级到net6.0以下而导致的这个错误。

从 .csproj 文件中删除以下项目:

  1. <ImplicitUsings>
  2. <Using Include="..." />