4

理論的には、.net フレームワークのどのバージョンに対してもコンパイルできるコードがあるとします。必要に応じて、「Hello World」と考えてください。

ただし、実際にコードをコンパイルすると、特定のバージョンに対して実行される実行可能ファイルが得られます。

コンパイルされたexeが見つかったバージョンに対して実行されるように調整する方法はありますか? 答えはノーだと強く思いますが、間違っていることが証明されれば幸いです...


編集:さて、私たちの階段の下に行きます。後のフレームワークが、以前のバージョンでコンパイルされた exe を問題なく実行できるとは思いもしませんでした。すべての応答に感謝します!

4

7 に答える 7

6

これが正しいかどうかはわかりませんが、最も低いバージョン用にコンパイルしてみます。より高いバージョンでは、より低いバージョンのexeを実行できるはずです。

于 2008-09-04T15:03:33.167 に答える
3

VS 2008 マルチターゲット サポートに関する ScuttGu の投稿を読む

VS 2008 リリースから開始する大きな変更の 1 つは、「マルチターゲット」と呼ばれるものをサポートすることです。これは、Visual Studio が .NET Framework の複数のバージョンのターゲットをサポートするようになり、開発者が開始できるようになることを意味します。新しいバージョンの .NET Framework ライブラリを使用するために、既存のプロジェクトやデプロイされたアプリケーションを常にアップグレードする必要なく、Visual Studio が提供する新機能を利用できます。

既存のプロジェクトを開くか、VS 2008 で新しいプロジェクトを作成するときに、使用する .NET Framework のバージョンを選択できるようになりました。これにより、IDE はこれに合わせてコンパイラと機能セットを更新します。これは特に、そのバージョンのフレームワークでは機能しない機能、コントロール、プロジェクト、項目テンプレート、およびアセンブリ参照が非表示になることを意味し、アプリケーションをビルドするときにコンパイル済みのファイルを取得できるようになります。古いバージョンの .NET Framework のみがインストールされているマシンに出力してコピーすると、アプリケーションが動作することがわかります。

そうすれば、VS2008 を使用して、.NET 2.0、3.0、および 3.5 の両方で動作する .NET 2.0 プロジェクトを開発できます。

于 2008-09-04T15:03:23.353 に答える
0

ユーザーがインストールした .NET フレームワークに関しては、.NET 3.5 SP1 で利用できるクライアント プロファイルの新しいオプションもあります。これにより基本的に、必要なファイル (完全な .NET フレームワークのサブセット) をダウンロードしてインストールする小さな (277k) ブートストラップ プログラムを出荷できます。

小規模な .NET インストールの作成に関する詳細と一般的なヒントについては、Scott Hanselman によるこの素晴らしいブログ エントリを参照してください。

于 2008-09-04T15:55:14.273 に答える
0

マルチ ターゲティングに加えて、フレームワークには下位互換性があるため、1.0 にコンパイルされたものは 1.1 と 2 で実行されます。1.1 でコンパイルされたものは 2 で実行されます。

于 2008-09-04T15:04:51.727 に答える
0

.Net クラス ライブラリに関しては、 @John Bokerが正しいことを知っています。.Net 1.1 に対してクラス ライブラリをコンパイルし、それを .Net 2.0 以降のプロジェクトで使用できます。

実行可能ファイルについても同じことが当てはまると思います。

于 2008-09-04T15:05:11.040 に答える
0

2005年および2008年、はい(CLR 2.0上)

2003 では、いいえ.. CLR 1.1 にコンパイルされるためです。

#if (DOTNET35) などを使用して理論的にいくつかのコードを記述し、コンパイラの知識の範囲外の機能を使用せずに、目的のコンパイラをアプリで実行することができます... ただし、これの有用性については疑問です。

于 2008-09-04T15:05:29.183 に答える
0

私の知る限り、すべての .NET バージョン (バージョン 1.x を除く) は同じバイトコードにコンパイルされます。C# の場合、すべての新機能は単なるシンタックス シュガーであり、コンパイル時に C# 2.0 の構造に変換されます。問題が発生する重要なポイントは、C# 3.0 または 3.5 固有の DLL を使用する場合です。これらは .NET 2.0 フレームワークではうまく機能しないため、使用できません。

これに対する回避策は本当に考えられません、申し訳ありません:(

于 2008-09-04T15:06:24.453 に答える