欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.NET 6 中的隱式命名空間引用

 更新時(shí)間:2021年09月17日 09:09:40   作者:WenihabLi  
這篇文章小編主要向大家介紹的是介紹了.NET 6 中的隱式命名空間引用,其正式版發(fā)布之前會(huì)專注于各種測試和 BUG 修復(fù),下面就由小編來詳細(xì)介紹吧,感興趣的小伙伴可以參考下文

前言:

之前寫過一篇隱式命名空間引用的大概介紹,在一些小的測試項(xiàng)目中也有在用,一直沒作為示例給大家分享,主要原因在于之前看到了一個(gè)關(guān)于隱式命名空間引用的 Github issue 提到會(huì)有一些破壞性的變更,現(xiàn)在 .NET 6 RC 1 版本已經(jīng)發(fā)布,RC 版本的發(fā)布也就意味著新功能的開發(fā)已經(jīng)基本結(jié)束,正式版發(fā)布之前會(huì)專注于各種測試和 BUG 修復(fù)。

1、歷史變化

.NET 6 Preview 7 時(shí)微軟已經(jīng)開始引入隱式命名空間引用的功能,可以參考之前的文章 .NET 6 即將到來的新特性  隱式命名空間引用

Preview 7 的時(shí)候這個(gè)功能默認(rèn)是啟用的,如果需要禁用需要配置 DisableImplicitNamespaceImports 來禁用,而在 .NET 6 RC 1 版本中默認(rèn)是禁用的,需要顯式的通過 ImplicitUsings 來啟用,微軟的 ASP.NET Core RC 1 的博客文章中有所提及,但是很簡略,一帶而過了。

在 Preview 7 中如果想要使用新加一個(gè) namespace 引用,可以在項(xiàng)目文件中配置 <Import Inclde="Microsoft.Extensions.Logging"/> 來增加一個(gè)全局的命名空間,在 RC1 中將變成 <Using Include="Microsoft.Extensions.Logging"/>

類似地,如果要移除某一個(gè)命名空間的引用,之前是 <Import Remove="Microsoft.Extensions.Logging"/> 而現(xiàn)在是 <Using Remove="Microsoft.Extensions.Logging"/>

2、新版本介紹

使用 .NET 6 RC 1 SDK 創(chuàng)建應(yīng)用之后,項(xiàng)目文件是這樣的

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

相比 .NET 6 Preview 7 多了一個(gè) ImplicitUsings 的屬性,這個(gè)就是前面提到的用于啟用隱式命名空間引用的配置屬性,可以配置為 enable 或者 true 來啟用這個(gè)特性

3、More usage

來看下面的這個(gè)示例:

MyFile.Exists("");

WriteLine("Hello, World!");

InvokeHelper.TryInvoke(() => WriteLine("ImplicitUsingSample"));

項(xiàng)目文件中自定義的命名空間引用

<ItemGroup>
    <Using Include="System.Console" Static="true" /> <!-- Global using static -->
    <Using Include="WeihanLi.Common.Helpers" /> <!-- Global using -->
    <Using Include="System.IO.File" Alias="MyFile" /> <!-- Global using alias -->
    <Using Remove="System" /> <!-- Remove namespace using -->
</ItemGroup>

自動(dòng)生成的 Global Using 文件內(nèi)容如下(自動(dòng)生成文件位置在 obj/Debug/$(TargetFramework)/*.GlobalUsings.g.cs ):

// <auto-generated/>
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.Threading;
global using global::System.Threading.Tasks;
global using global::WeihanLi.Common.Helpers;
global using MyFile = global::System.IO.File;
global using static global::System.Console;

默認(rèn)的命名空間引用和所使用的 SDK 有關(guān)系,目前確定的如下:

4、More

個(gè)人覺得這是一個(gè)好的變更,如果默認(rèn)啟用的話,有很多項(xiàng)目在升級的時(shí)候可能就會(huì)有沖突導(dǎo)致無法正常的編譯,而默認(rèn)禁用,升級的時(shí)候就能避免這種 breaking change,升級可以更加平滑,只是對于 Preview 7 升級過來的用戶來說可能會(huì)有些難受,不過因?yàn)檫€是 preview 的功能有一些破壞性的變更也是可以接受的。

有了 Global using 之后,之前很多做不到的事情,現(xiàn)在就變得可能,比如使用類型別名

使用起來可能會(huì)發(fā)現(xiàn)有一些 BUG ==,發(fā)現(xiàn) BUG 在 Github 上提 issue 就好了

如果沒有體驗(yàn)過 .NET 6 的 Preview 版本,非常推薦嘗試一下 .NET 6 RC 1,新功能已經(jīng)基本確定了,進(jìn)行更多的測試來努力讓 .NET 6 成為一個(gè)高質(zhì)量的 Release

到此這篇關(guān)于.NET 6 中的隱式命名空間引用的文章就介紹到這了,更多相關(guān).NET 6 中的隱式命名空間引用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論