C# 10:禁用全局使用

Mar*_*tin 70 .net c# c#-10.0

如何禁用 C# 10 中新的默认全局使用(请参见此处:https: //github.com/dotnet/aspnetcore/issues/32451)?

我想一目了然地看到使用的命名空间,并且不想查找全局使用哪些命名空间的文档。

Mar*_*tin 103

<ImplicitUsings>disable</ImplicitUsings>必须添加到 csproj 文件中的 PropertyGroup。

例如:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>disable</ImplicitUsings>
    </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 .NET 6 的测试版,则必须使用<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>.


Luc*_*zzi 14

就我而言,我必须删除

<ImplicitUsings>enable</ImplicitUsings>
Run Code Online (Sandbox Code Playgroud)

来自 csproj


mkj*_*sen 9

你不能。

该问题询问如何禁用C# 10 的global using指令功能,即在指令using前面加上前缀 ,global将指令应用于整个编译单元(通常是项目)。

目前公认的禁用MSBuildImplicitUsings属性的答案不会影响该global using功能。相反,“implicit s”是一个单独的功能,它通过自动、透明地将一组指令注入到编译单元中来using构建该功能,具体引用的程序集取决于项目类型。禁用该属性可以防止这种注入,但会保留该指令的完整功能。global usingglobal usingImplicitUsingsglobal using