移除指定 global using 命名空间

前言

在《.NET 6新特性试用 | 隐式using指令》中,我们介绍过,开启隐式using指令时,会在编译时生成 GlobalUsings.g.cs 文件,加入大量 global using 指令:

// <auto-generated/>
global using global::Microsoft.AspNetCore.Builder;
global using global::Microsoft.AspNetCore.Hosting;
global using global::Microsoft.AspNetCore.Http;
global using global::Microsoft.AspNetCore.Routing;
global using global::Microsoft.Extensions.Configuration;
global using global::Microsoft.Extensions.DependencyInjection;
global using global::Microsoft.Extensions.Hosting;
global using global::Microsoft.Extensions.Logging;
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Net.Http.Json;
global using global::System.Threading;
global using global::System.Threading.Tasks;

这样的好处是,不用在每个 cs 文件中写using指令了。

但是,如果不想自动引入某个 global using 命名空间,怎么办?

思路

上次,我们已经分析出,global using 具体值来源于项目引用的SDK。

例如,C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.Web\Sdk\Sdk.props 是这样引用的:

<ItemGroup Condition="'$(Language)' == 'C#' AND ('$(ImplicitUsings)' == 'true' or '$(ImplicitUsings)' == 'enable')">
    <Using Include="System.Net.Http.Json" />
    <Using Include="Microsoft.AspNetCore.Builder" />
    <Using Include="Microsoft.AspNetCore.Hosting" />
    <Using Include="Microsoft.AspNetCore.Http" />
    <Using Include="Microsoft.AspNetCore.Routing" />
    <Using Include="Microsoft.Extensions.Configuration" />
    <Using Include="Microsoft.Extensions.DependencyInjection" />
    <Using Include="Microsoft.Extensions.Hosting" />
    <Using Include="Microsoft.Extensions.Logging" />
  </ItemGroup>

那么,只需要把文件中对应行删除就可以了?!

但是,这种方式必须为所有开发机器都修改,肯定不现实。

那既然有Using Include,会不会还有Using Exclude呢?

实现

你还别说,还真有:

59ebb7552768bfd52923d7fd76920f5e.png

但是,在项目文件中添加了下列内容后,编译报错:

<ItemGroup>
    <Using Exclude="Microsoft.AspNetCore.Builder" />
</ItemGroup>

01b4d03845dbddec29027a3f20c468e6.png

按照错误提示,我们改用 Remove:

<ItemGroup>
    <Using Remove="Microsoft.AspNetCore.Builder" />
</ItemGroup>

再次编译出错,这次的错误是正确的,因为我们已经成功的移除了指定 global using 命名空间。

f97b008236927eaa045226757b08c96b.png

结论

如果你对 global using 有特定要求,可以采取本文中的方案进行移除。

想了解更多内容,请关注我的个人公众号”My IO“

7c1537e2a9fe04a0f4a3b1b50f44ec0b.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值