rksoftware

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

暗黙的な global using ディレクティブによる破壊的変更の回避

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

記事の中で実際に .NET 5 で通っていたコードが .NET 6 でエラーになるパターンを挙げて確認しました。

■ DisableImplicitNamespaceImports プロパティ

このエラーは、 .csproj ファイルで DisableImplicitNamespaceImports プロパティを設定すると回避できます(暗黙的な global using を無効化できます)。

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
  </PropertyGroup>

</Project>

ドキュメントによると ImplicitUsings プロパティというのもあるそうですが、設定しても効果が見られませんでした。要調査。

f:id:rksoftware:20210912232609j:plain

DisableImplicitNamespaceImports プロパティを設定したコードです。
以前エラーになっていた Console はエラーになっていません。代わりに String (System.String クラス) がエラーになっています。
using System; がないため。

DisableImplicitNamespaceImports プロパティ。覚えておきましょう。