前言
在《》中,我们介绍过强制删除命名空间,开启隐式using指令时,会在编译时生成 GlobalUsings.g.cs 文件,加入大量 global using 指令:
//
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 Filesdotnetsdk6.0.100SdksMicrosoft.NET.Sdk.WebSdkSdk.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" />
那么,只需要把文件中对应行删除就可以了?!
但是,这种方式必须为所有开发机器都修改,肯定不现实。
那既然有Using Include强制删除命名空间,会不会还有Using Exclude呢?
实现
你还别说,还真有:
但是,在项目文件中添加了下列内容后,编译报错:
<Using Exclude="Microsoft.AspNetCore.Builder" />
按照错误提示,我们改用 Remove:
<Using Remove="Microsoft.AspNetCore.Builder" />
再次编译出错,这次的错误是正确的,因为我们已经成功的移除了指定 global using 命名空间。
结论
如果你对 global using 有特定要求,可以采取本文中的方案进行移除。
限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688
主题授权提示:请在后台主题设置-主题授权-激活主题的正版授权,授权购买:RiTheme官网
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。