C# 10:禁用全局 Using

62

https://github.com/dotnet/aspnetcore/issues/32451#issuecomment-870812382 - DekuDesu
3个回答

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

例如:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>disable</ImplicitUsings>
    </PropertyGroup>
</Project>
如果你正在使用 .NET 6 的 beta 版本,你将需要使用 <DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>

1
这仅适用于 .NET 6 beta 版本。对于 .NET 6 发布候选版 1 或更新版本,请设置 ImplicitUsings 以禁用。 - Martinaut
谢谢您,这也适用于发布的.NET 6.0 LTS版本。 - Stefan
从项目文件中删除<ImplicitUsings>enable</ImplicitUsings>并没有解决问题,但将其设置为disabled则可以。我的项目是多目标的:<TargetFrameworks>net6.0;net5.0</TargetFrameworks> - Daniel Gabriel

13

在我的情况下,我必须删除

<ImplicitUsings>enable</ImplicitUsings>

来自csproj文件


8

你不能这样做。

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

目前接受的答案是禁用 ImplicitUsings MSBuild 属性,但不影响 global using 功能。相反,“隐式 using” 是一个独立的功能,它建立在 global using 功能之上,通过自动透明地将一组 global using 指令注入到编译单元中,具体引用的程序集取决于项目类型。禁用 ImplicitUsings 属性会防止这种注入,但会使 global using 指令完全可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接