.net C# 10:禁用全局使用

nc1teljy  于 2023-01-18  发布在  .NET
关注(0)|答案(3)|浏览(238)

我如何在C# 10中禁用新的默认全局用法(见此处:https://github.com/dotnet/aspnetcore/issues/32451)?
我希望能一眼看到使用过的名称空间,而不希望查找全局使用名称空间的文档。

t40tm48m

t40tm48m1#

必须将<ImplicitUsings>disable</ImplicitUsings>添加到csproj文件中的属性组。
例如:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>disable</ImplicitUsings>
    </PropertyGroup>
</Project>

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

jxct1oxe

jxct1oxe2#

在我的情况下,我不得不

<ImplicitUsings>enable</ImplicitUsings>

来自csproj

stszievb

stszievb3#

你不能。
该问题询问如何禁用C# 10的global using指令功能,即在using指令前加上global会将该指令应用于整个编译单元(通常是项目)。
目前接受的禁用ImplicitUsings MSBuild属性的答案不会影响global using功能。相反,“隐式using s”是一个独立的功能,它通过自动、透明地将一组global using指令注入编译单元,在global using功能的基础上构建。引用的特定程序集,具体取决于项目类型。禁用ImplicitUsings属性可防止此注入,但global using指令仍完全有效。

相关问题