丹阳企业网站制作,河北省建设厅正规网站,所见即所得网页编辑器,深圳有名的品牌设计公司.NET 6 即将到来的新特性 —— 隐式命名空间引用Intro之前我们在 ASP.NET Core 6 Minimal API 中曾经提到过现在我们还是需要手动加命名空间引用#xff0c;在以后的版本中可能就不需要手动加命名空间的引用了#xff0c;确实是的。今天看到一个更新#xff0c;可以不需要写… .NET 6 即将到来的新特性 —— 隐式命名空间引用Intro之前我们在 ASP.NET Core 6 Minimal API 中曾经提到过现在我们还是需要手动加命名空间引用在以后的版本中可能就不需要手动加命名空间的引用了确实是的。今天看到一个更新可以不需要写 using了目前还没有正式发布应该要到 .NET 6 Preview 7 才会支持。Sample还是以我们之前的 Minimal API 为例子之前我们的示例可能是这样的using Microsoft.AspNetCore.Builder;var app WebApplication.Create(args);
app.Map(/, () Hello World);
app.Run();
或者结合 global using 之后把 using 放在一个单独的 Imports 文件中,Imports:global using Microsoft.AspNetCore.Builder;
Program:var app WebApplication.Create(args);
app.Map(/, () Hello World);
app.Run();
在 .NET 6 Preview 7 中我们将不需要再加 using 了Preview 7 会包含一个新的特性——“隐式命名空间引用”这个特性将会默认为你的项目添加常用的命名空间我们就可以不再需要上面的 Imports 了How it works它的实现方式也是基于之前的 global using 特性来实现的编译器会根据 MS Build 中配置的命名空间生成一个 global using 的文件就像上面的 Imports目前针对不同的 SDK 类型会添加不同的默认 namespace目前已有的如下针对 Microsoft.NET.Sdk默认的命名空间如下System
System.Collections.Generic
System.IO
System.Linq
System.Net.Http
System.Threading
System.Threading.Tasks
针对 Microsoft.NET.Sdk.WebSystem.Net.Http.Json
Microsoft.AspNetCore.Builder
Microsoft.AspNetCore.Hosting
Microsoft.AspNetCore.Http
Microsoft.AspNetCore.Routing
Microsoft.Extensions.Configuration
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Hosting
Microsoft.Extensions.Logging
针对 Microsoft.NET.Sdk.WorkerMicrosoft.Extensions.Configuration
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Hosting
Microsoft.Extensions.Logging
如果你想禁用隐式命名空间引用可以通过 DisableImplicitNamespaceImports 来完全禁用这个功能DisableImplicitNamespaceImportstrue/DisableImplicitNamespaceImports
如果你只是想禁用针对 Microsoft.NET.Sdk.Web 的引用则可以配置 DisableImplicitNamespaceImports_WebDisableImplicitNamespaceImports_Webtrue/DisableImplicitNamespaceImports_Web
配置对应关系SDKPropertyNameMicrosoft.NET.SdkDisableImplicitNamespaceImports_DotNetMicrosoft.NET.Sdk.WebDisableImplicitNamespaceImports_WebMicrosoft.NET.Sdk.WorkerDisableImplicitNamespaceImports_Worker后面应该会有更多的支持具体还是要以最终 .NET6 正式发布时为准我们也可以为我们的 library 启用 global using 的功能这样在使用的时候也可以不加 using 直接使用只需要打包的时候在项目文件中增加一个类似下面的 property 到项目里即可微软的大佬在这里有一个很好的示例 https://github.com/JunTaoLuo/GlobalUsingsProjectItemGroupGlobalUsings IncludeLibrary //ItemGroup
/Project
More隐式命名空间引用能够使得我们避免写特别多重复的命名空间引用对于简单的测试应用来说会非常的方便虽然隐式的命名空间引用能够为我们大大简化代码不需要再写重复的 using 代码但是也有可能会对代码造成冲突比如自己定义的一个类在自己的命名空间下和默认隐式引用的命名空间下都存在此时就会造成冲突如果不能移除默认的命名空间引用那使用的时候就需要使用完全限定名或者别名可能会有点不太方便Referenceshttps://github.com/dotnet/docs/issues/25066https://github.com/dotnet/core/issues/6444https://github.com/dotnet/sdk/pull/18459https://github.com/JunTaoLuo/GlobalUsings