.NET 2.0 をターゲットとしてコード内で拡張メソッドを使用する場合は、カスタム ExtensionAttribute を定義する必要があります。ただし、同じライブラリを上位のフレームワーク バージョン (.NET 3.0 ~ 4.0) でコンパイルすると、「ExtensionAttribute が複数の場所で定義されています」という警告が表示されます。
条件付きコンパイル ディレクティブを利用して ExtensionAttribute を含めます。 .NET 2.0 をターゲットとする場合のみ。 DefineConstants 要素を csproj ファイルに導入すると、TargetFrameworkVersion 値を設定できます。
<Project ...> ... <PropertyGroup> ... <DefineConstants Condition=" '$(TargetFrameworkVersion)' == 'v4.0' ">RUNNING_ON_4</DefineConstants> <DefineConstants Condition=" '$(TargetFrameworkVersion)' != 'v4.0' ">NOT_RUNNING_ON_4</DefineConstants> ... </PropertyGroup> ... </Project>
コードでは、#if、#endif などのプリプロセッサ ディレクティブを使用して、ターゲットに基づいて条件付きで ExtensionAttribute を定義して使用します。フレームワークのバージョン。
#if RUNNING_ON_4 Console.WriteLine("RUNNING_ON_4 is set"); #elif NOT_RUNNING_ON_4 Console.WriteLine("NOT_RUNNING_ON_4 is set"); #endif
これを行うことで、警告が表示されなくなり、 ExtensionAttribute は必要な場合にのみ含まれます。
以上が異なる .NET Framework バージョンをターゲットにする場合に「ExtensionAttribute が複数の場所で定義されています」という警告に対処するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。