2009-03-11 7 views
2

C#コンパイラには、対象となるプラットフォームのバージョンを検出するための定数がありますか?C#コンパイラはバージョンまたはプラットフォームの定数を設定しますか?

プロジェクトオプションでプラットフォームを設定できますが、.NET 2と.NET 3.5の単一ソースを作成するにはどうすればよいですか?

編集:私は実際にコードを一度書くだけで、#if CLR_VERSION35 のようなもので動作を切り替え、次にrnの設定を変えることができます。

逆の質問:CLR35とCLR20を設定すると、これに基づいてターゲットプラットフォームを選択できますか?このオプションはVS2008では使用できません。私はMSBUILDについてまだよく分かりません。

答えて

5

.NET Framework 3.5は2.0のスーパーセットなので、2.0のすべてのアプリケーションは修正なしで3.5で実行する必要があります。それはスーパーセットであるため、あなたのアプリが2.0で見つかった場合に3.5機能を使用しないように逆行させる方法はありません。

2.0をターゲットにする必要がある場合は、2.0で必要なものを書くことができます。これはやり方です。3.5は引き続きアプリを正常に実行します。効果的には、最低限の分母を書くか、インストーラで3.5ランタイム再配布可能ファイルをインクルードして、顧客がアプリケーションに適切な環境を持つようにする必要があります。

+0

かどうthis blogであり

より多くの情報。 – Tassadaque

+0

@タサダケ、ラザロと同じです。 (1)最低共通の分母に書き込むか、または(2)あなたが必要とするverisonのためにnedした再配布可能ファイルを含めます。幸いにも、セットアッププロジェクトは、再配布可能なもののインクルードをかなり簡単にします。また、コンパイル時に知っておく必要がある場合は、Chris Sさんが答えたとおりです:条件付きコンパイルシンボルを追加して、ソースコードが知る必要があることを教えてください。 –

2

VS2008では、プロジェクトのプロパティ(ソリューションエクスプローラでプロジェクトを右クリック)でターゲットフレームワークを設定できます。また、新しいプロジェクトを作成するときには、新しいプロジェクトウィンドウの右上にドロップダウンがあります。

1

DEBUGとRELEASE以外にも、私が知っている限りではありません。私は検索を保存し、プロジェクトプロパティの中に自分自身を定義するだけです。 "ビルド"タブ、 "条件付きコンパイルシンボル"。それは、我々はまた、4.0を.NETている場合場合には解決策になるどのような任意の使用

関連する問題