.NET 6 中的隱式命名空間引用
前言:
之前寫過一篇隱式命名空間引用的大概介紹,在一些小的測試項(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)文章希望大家以后多多支持腳本之家!
- .NET6中哈希算法的簡化用法的實(shí)現(xiàn)
- CefSharp v62修改方法(支持.net4.0)
- ASP.NET Core項(xiàng)目配置教程(6)
- ASP.NET Core部署前期準(zhǔn)備 使用Hyper-V安裝Ubuntu Server 16.10
- ASP.NET MVC5+EF6+EasyUI 后臺(tái)管理系統(tǒng)(81)-數(shù)據(jù)篩選(萬能查詢)實(shí)例
- ASP.NET MVC異步獲取和刷新ExtJS6 TreeStore
- ASP.NET MVC5+EF6+EasyUI后臺(tái)管理系統(tǒng) 微信公眾平臺(tái)開發(fā)之資源環(huán)境準(zhǔn)備
- ASP.NET MVC5+EF6+EasyUI后臺(tái)管理系統(tǒng) 微信公眾平臺(tái)開發(fā)之消息管理
- .NET 6 即將到來的新特性 隱式命名空間引用
相關(guān)文章
ASP.NET Web API教程 創(chuàng)建域模型的方法詳細(xì)介紹
本文將介紹幾種常見的創(chuàng)建域模型的方法,有需要的朋友可以適當(dāng)?shù)膮⒖?/div> 2012-11-11.NET 6新特性試用Timer類之PeriodicTimer?
這篇文章主要介紹了.NET 6新特性試用Timer類之PeriodicTimer,PeriodicTimer與其他Timer需要?jiǎng)?chuàng)建事件回調(diào)不同,下,下面文章詳細(xì)介紹PeriodicTimer的使用方式,需要的朋友可以參考一下2022-02-02ASP.NET?Core使用功能開關(guān)控制路由訪問操作
這篇文章主要介紹了ASP.NET?Core使用功能開關(guān)控制路由訪問操作,而對于一些試驗(yàn)性的功能,我們并不希望用密碼去控制是否允許訪問,而是想用一種開關(guān)的方式開放,下面文章我們就來試著實(shí)現(xiàn)這個(gè)功能,需要的小伙伴可以參考一下2022-02-02最新評論