2

移除指定 global using 命名空间 #yyds干货盘点#

 3 years ago
source link: https://blog.51cto.com/MyIO/5114307
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

移除指定 global using 命名空间 #yyds干货盘点#

原创

My空格IO 2022-03-17 16:17:58 博主文章分类:.NET 6 ©著作权

文章标签 microsoft .net json 文章分类 .Net 编程语言 阅读数164

在《​ ​.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​​呢?

你还别说,还真有:

移除指定 global using 命名空间 #yyds干货盘点#_microsoft

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

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

移除指定 global using 命名空间 #yyds干货盘点#_.net_02

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

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

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

移除指定 global using 命名空间 #yyds干货盘点#_microsoft_03

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

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

移除指定 global using 命名空间 #yyds干货盘点#_json_04

  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK