1. ホーム
  2. Web プログラミング
  3. ASP.NET

.NET 6における暗黙の名前空間参照

2022-01-14 06:36:15

まえがき

以前、暗黙の名前空間参照の一般的な紹介を書き、いくつかの小さなテストプロジェクトで使っていましたが、例として共有していませんでした。主に、暗黙の名前空間参照で Github issue には、破壊的な変更があることが記載されていましたが、現在では {NET 6 RC 1 NET 6 RC 1 RCリリースは、新機能の開発が基本的に終了したことを意味し、リリースはテストと RCリリースは、新機能の開発が基本的に終了し、テストに重点を置いたリリースとなることを意味します。 BUG を修正しました。

1. 履歴の変更

NET 6 Preview 7 Microsoft はプロジェクト開始当初から暗黙の名前空間参照を導入し始めています(以前の記事参照)。 NET 6 の今後の機能 暗黙の名前空間参照

Preview 7 この機能を無効化したい場合は DisableImplicitNamespaceImports で無効化し、一方 {NET 6 RC 1 NET 6 RC 1 はデフォルトで無効化されています。 で明示的に無効化する必要があります。 ImplicitUsings を有効にするには、マイクロソフトの ASP.NET Core RC 1 は、マイクロソフトのブログ記事で言及されていますが、大雑把で読み飛ばしています。

Preview 7 で新しい名前空間参照を使用したい場合は、以下のように設定します。 <インポート Inclde="Microsoft.Extensions.Logging"/> を使用してグローバルな名前空間を追加します。 <使用方法

同様に、以前は で、現在は

2. 新バージョンの紹介

使用方法 NET 6 RC 1 SDK アプリケーションを作成すると、プロジェクトファイルは次のようになります。

<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 には、さらに ImplicitUsings 属性は、以前紹介した暗黙の名前空間参照を有効にするための設定属性で、次のように設定できます。 enable または true をクリックすると、この機能が有効になります。

3、その他の使用方法

をクリックすると、次のような例が表示されます。

MyFile.Exists("");

WriteLine("Hello, World! ");

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



プロジェクトファイル内のカスタム名前空間参照

<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>


自動生成される Global Using その内容は次のとおりです(自動生成されたファイルは obj/Debug/$ (TargetFramework)/*.GlobalUsings.g.cs ).

// <auto-generated/>
global using global::System.Collections;
global using global::System.IO;
Linq;
Http; global using global::System;
Threading; global using global::System;
Tasks; global using global::System;
Tasks; global using global::WeihanLi.Common.Helpers;
Tasks; global using global::WeihanLi.Common.Helpers; global using MyFile = global::System;
Global using static global::System;



デフォルトの名前空間参照は、使用するSDKに関連し、現在以下のように決定されています。

4. もっと見る

個人的には、これは良い変更だと思います。デフォルトで有効にすると、アップグレード時に競合が発生して正常にコンパイルできないプロジェクトが多く、デフォルトで無効にすることで、アップグレードが回避できるようになります breaking change これは良い変更ですが、Preview 7からアップグレードしたユーザーにとっては、少し違和感があるかもしれませんが、まだ、このままなので preview はまだ{{code preview}}なので許容範囲内です。

を使用すると Global using 型別名の使用など、以前は不可能だった多くのことが可能になりました。

使ってみると、バグ==が見つかるかもしれません。 Github について issue 大丈夫です

{まだ.NET Frameworkを体験していない方は、ぜひ一度体験してみてください。 .NET 6のPreview版を体験していない場合は、.NET 6 RC 1を体験することを強くお勧めします。 .NET 6は高品質な
Release

NET 6は高品質です

NET 6 暗黙の名前空間のリファレンスは、過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。