做网站卖房写标题,网站标签布局,阿里云认证网站建设,jsp网站加载慢前言在使用《最小Web API》时#xff0c;我们发现#xff0c;相比以前的代码#xff0c;大量的using指令消失了#xff1a;using指令的主要作用是允许使用在命名空间中定义的类型#xff0c;而无需指定该类型的完全限定命名空间。那么#xff0c;在.NET 6下为什么不需要了… 前言在使用《最小Web API》时我们发现相比以前的代码大量的using指令消失了using指令的主要作用是允许使用在命名空间中定义的类型而无需指定该类型的完全限定命名空间。那么在.NET 6下为什么不需要了呢ImplicitUsings属性遍历项目下的所有文件最后在csproj中找到这样一个属性应该和using指令相关将属性值改成disable则编译失败需要在文件顶部加上using指令也就是说编译时其实还是需要using指令的。那它们写在哪了global using指令打开obj目录用于存放编译过程中生成的中间临时文件在cs文件的对应目录发现了WebApplication1.GlobalUsings.g.cs文件:原来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;global using的官方文档说明如下向 using 指令添加 global 修饰符意味着 using 将应用于编译中的所有文件通常是一个项目也就是说对于任何命名空间无需再在每个文件上写using指令只需在一个文件中写global using指令即可。而WebApplication1.GlobalUsings.g.cs文件是基于ImplicitUsings属性设置自动生成的。那么为啥会自动包含这些命名空间呢GenerateGlobalUsings任务使用MSBuild Structured Log Viewer使用方法请参看《天呐你知道MSBuild都干了些什么》查看MSBuild的输出日志可以看到WebApplication1.GlobalUsings.g.cs文件是由GenerateGlobalUsings任务生成的而任务参数数据来源于Using参数GenerateGlobalUsings Usings(Using)Output TaskParameterLines ItemName_GlobalUsingLines /
/GenerateGlobalUsings而具体值来源于项目引用的SDK:结论了解原理后我们可以使用项目文件即可增加我们的自定义global usingItemGroupUsing IncludeGlobalUsingDemo /
/ItemGroup利用隐式using指令再也不用在cs文件中写using指令了如果你觉得这篇文章对你有所启发请关注我的个人公众号”My IO“