コンパイル時にターゲット フレームワークのバージョンを動的に決定する
C# プロジェクトでは、開発者は、ベースのクラスまたはメソッドを条件付きで定義する必要があるシナリオに遭遇することがあります。ターゲットフレームワークのバージョンに応じて。このようなケースの 1 つは、.NET 2.0 内では特定の属性を必要とするが、それ以降のフレームワーク バージョンでは必要ない可能性がある拡張メソッドを扱うときに発生します。
これを実現するには、条件付きコンパイル ディレクティブを使用する便利なソリューションが存在します。これらのディレクティブを使用すると、開発者は、特定の条件に基づいてコンパイル中にのみ含めるか除外するコード ブロックを定義できます。
ターゲット フレームワークのバージョンを検出する場合、開発者はプロジェクトの csproj ファイル内の TargetFrameworkVersion プロパティを利用できます。 .NET 2.0 との互換性のための条件付き属性定義を作成する方法は次のとおりです。
<Project> <PropertyGroup> <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> <DefineConstants Condition="'$(TargetFrameworkVersion)' == 'v2.0'">ExtensionAttribute</DefineConstants> </PropertyGroup>
この条件付き定義を使用すると、.NET 2.0 をターゲットとする場合にのみ ExtensionAttribute クラスを含めることができ、上位のフレームワーク バージョンでのコンパイル エラーを回避できます。この属性を利用するコードは、#if ディレクティブと #endif ディレクティブ内にラップされます。
#if ExtensionAttribute public sealed class ExtensionAttribute : Attribute { } #endif
条件付きコンパイル ディレクティブを採用することで、開発者は、さまざまなターゲット フレームワーク バージョンにシームレスに適応するコードを柔軟に記述でき、互換性が確保されます。不要なエラーを回避します。
以上がC# でコンパイル時にターゲット フレームワークのバージョンを動的に決定して使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。