条件付きコンパイルによる複数の .NET Framework のターゲット
条件付きコンパイルは、C# コードを特定の .NET Framework バージョンに合わせて調整するための強力なメカニズムを提供し、互換性を確保し、バージョン固有のエラーを回避します。 これは、プリプロセッサ ディレクティブによって実現されます。
プリプロセッサ ディレクティブの活用
プリプロセッサ ディレクティブを使用すると、定義されたシンボルに基づいてコード ブロックを条件付きで含めたり除外したりできます。 例:
<code class="language-csharp">#if NET40 using FooXX = Foo40; #elif NET35 using FooXX = Foo35; #else using FooXX = Foo20; // Default if NET40 and NET35 aren't defined #endif</code>
NET40
、NET35
、および NET20
は自動的に定義されないことに注意してください。明示的に設定する必要があります。
MSBuild によるシンボルの定義
/p:DefineConstants
MSBuild プロパティを使用してこれらのシンボルを挿入できます。
<code>/p:DefineConstants="NET40"</code>
これにより、NET40
シンボルがプロジェクトのビルド構成に追加されます。
ビルド構成の管理
または、プロジェクト ファイル内に個別のビルド構成を作成します。各構成は独自の DefineConstants
値を定義できます:
<code class="language-xml"><PropertyGroup Condition="'$(Framework)' == 'NET20'"> <DefineConstants>NET20</DefineConstants> </PropertyGroup> <PropertyGroup Condition="'$(Framework)' == 'NET35'"> <DefineConstants>NET35</DefineConstants> </PropertyGroup></code>
いずれかの構成でデフォルトのフレームワーク バージョンを設定します。例:
<code class="language-xml"><PropertyGroup> <Framework>NET35</Framework> </PropertyGroup></code>
異なるバージョンの自動再コンパイル
ビルド構成を定義した後、AfterBuild
ターゲットを使用して、他のフレームワーク バージョン用に自動的に再コンパイルします。
<code class="language-xml"><Target Name="AfterBuild"> <MSBuild Projects="$(MSBuildProjectFile)" Properties="Framework=NET20" RunEachTargetSeparately="true" Condition="'$(Framework)' != 'NET20'" /> </Target></code>
これにより、最初のビルド後にプロジェクトが .NET 2.0 用に再コンパイルされます (.NET 3.5 がデフォルトであると仮定します)。各コンパイルでは、適切な条件定義が使用されます。
高度なテクニック
条件付きコンパイルは、単純な using
ステートメントを超えて拡張されます。また、ターゲット フレームワークに基づいてファイル全体または参照全体を条件付きで含めたり除外したりすることもでき、ビルド プロセスをきめ細かく制御できます。
以上が条件付きコンパイルを使用して異なる .NET Framework バージョンをターゲットにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。