.NET6新特性之 隱式命名空間引用

早在 .NET 6 Preview 7版本中微軟就已經引入隱式命名空間引用。在.NET Preview 7這個版本中這個功能是默認開啟的,如果需要禁用它的化就需要配置DisableImplicitNamespaceImports來禁用,但是到瞭.NET6 RC1版本的時候這個功能是禁用的,如果要使用就需要通過ImplicitUsings來啟用。到瞭.NET6正式版中這個功能又又又默認開啟瞭。下面我們以.NET6正式拜為例,來看一下怎麼使用它吧!

如果我們要在新加一個命名空間的引用,可以在項目文件中配置增加<Using Include="命名空間"/>,如果需要移除一個命名空間可以這麼做<Using Remove="命名空間"/>

我們使用.NET 6創建應用之後,項目文件的內容類似下面這樣:

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

  <PropertyGroup>

    <TargetFramework>net6.0</TargetFramework>

    <Nullable>enable</Nullable>

    <ImplicitUsings>enable</ImplicitUsings>

  </PropertyGroup>

  <ItemGroup>

    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />

  </ItemGroup>

</Project>

從上面的JSON代碼中,我們看到有一個ImplicitUsings節點,這個節點就是我們前面提到的用於啟用隱式命名空間引用的配置屬性,可以配置為 enable 或者 true 來啟用這個特性。當我們開啟瞭這個特性後,

我們的代碼將變為下面這樣:

來看下面的這個示例:

項目文件的內容是這樣的:

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

	<PropertyGroup>

		<OutputType>Exe</OutputType>

		<TargetFramework>net6.0</TargetFramework>

		<ImplicitUsings>enable</ImplicitUsings>

		<Nullable>enable</Nullable>

	</PropertyGroup>

	<ItemGroup>

		<Using Include="System.Console" Static="true" />

		<Using Include="System.IO.File" Alias="MyFile"/>

		<Using Remove="System" />

	</ItemGroup>

</Project>

.NET6為我們生成必要的命名空間引用的同時,也為我們自動生成瞭Global Using文件,

內容如下:

// <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 MyFile = global::System.IO.File;

global using static global::System.Console;

這裡有一點需要註意:如果啟用這個功能的話,會出現項目升級的時候有沖突導致無法正常的編譯,但是如果禁用得話升級的時候就能避免這種問題,具體該不該開啟我覺得還是得看項目而定。

到此這篇關於 .NET6特新 隱式命名空間引用的文章就介紹到這瞭,更多相關 .NET6  隱式命名空間引用內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: