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

问题描述 投票:0回答:6

我有一个最初是为 .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.

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

c# visual-studio .net-core .net-5 .net-6.0
6个回答
241
投票

最后发现原因是项目文件中多了一个属性ImplicitUsings,.net 5.0不支持。

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

我需要从文件中删除 ImplicitUsings


20
投票

去掉csproj工程文件中的

<ImplicitUsings>enable</ImplicitUsings>
即可构建成功

这里

找到这个解决方案

18
投票

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

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

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

13
投票

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

<ImplicitUsings>disable</ImplicitUsings>


1
投票

如果您不想删除

ImplicitUsings
或对项目文件进行更改。您可以通过以下方式告诉构建 cli 在构建过程中禁用它:

dotnet build --configuration "Release" --framework "net5.0" /p:ImplicitUsings=false /p:PublishReadyToRun=false
    

0
投票
就我而言,我的项目文件中根本没有

<ImplicitUsings>

,并且该项目针对 .Net Framework 4.7.2。因此,可以使用的最新 C# 版本是 7.3,当然它没有全局使用。然而,每次编译时,Visual Studio都会在
<MyTestProject>.GlobalUsings.g.cs
下的相应文件夹中生成一个文件
obj
,然后将其包含到项目中,然后出现编译错误。

该项目是使用类上的“创建单元测试”菜单项和

NUnit3 Visual Studio 扩展生成的。创建的项目文件包含以下内容:

<ItemGroup> <Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" /> </ItemGroup>
项目还引用了

Microsoft.NET.Test.Sdk v17.11.1

.

删除这个

<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />

就成功了。之后,带有违规全局 using 语句的文件不再生成,并且项目构建正常。

© www.soinside.com 2019 - 2024. All rights reserved.