rksoftware

Visual Studio とか C# とかが好きです

暗黙的な global using ディレクティブをもっと細かく制御する

先日暗黙的な global using ディレクティブについて書きました。

実は暗黙的な global using ディレクティブは .csproj ファイルでもっと細かく制御できます。

■ Import Remove / Import Include

上に貼ったリンクの通りですが、例えば次のような要素を .csproj に書き足すことで制御できます。

<ItemGroup>
  <Import Remove="System" />
  <Import Include="Test" />
</ItemGroup>

ここでは System 名前空間を外して、Test 名前空間を追加しています。
全体の .csproj ファイルは次のようになっています。

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <Import Remove="System" />
    <Import Include="Test" />
  </ItemGroup>

</Project>

■ 設定語のイメージ

この設定を行ったソースコードのイメージです。

f:id:rksoftware:20210915005221j:plain

Test.Console クラスは Test 名前空間が using されているので使えています。System 名前空間が using されていないので競合もしていません。
一方 String クラスはエラーです。System 名前区間が using されていないのでクラスが見つかりません。

■ 備えよう

使いこなせば強力な機能です。しっかり覚えて .NET 6 / C# 10 に備えましょう。