3

これは簡単な質問です。私は .NET 4.5 (現在はベータ版) を使用してソフトウェアを作成しています。このソフトウェアを実行するには、どのバージョンの .NET ランタイムが必要ですか? 4.5ですか?少し古い?

また、.NET 更新プログラムは Windows Update の一部ですか?

4

5 に答える 5

7

4.5 コンパイル済みアセンブリを実行するには、4.5 フレームワークがインストールされている必要があります。4.5 のインストールはインプレース アップグレードであり、4.0 との上位互換性はほとんどありますが、下位互換性はまったくありません。

つまずく可能性のある特定の場所の 1 つは、タイプ フォワーダーです。4.5 フレームワークには、膨大な数の新しいタイプのフォワーダーが含まれています (1,100 以上)。型フォワーダーは、型がアセンブリ A からアセンブリ B に移動したことをアセンブリが宣言する方法です。CLR は、指定された型への参照を A から B にサイレントにリダイレクトします。

ただし、4.5 に対してコンパイルされたアセンブリは、アセンブリ B に存在するかのように型への参照を発行します。その後、そのアセンブリを 4.0 インストールに対して実行すると、型がアセンブリ B にあると想定されますが、そうではありません。結果は型ロード例外になります。

具体例:

static void Main(string[] args)
{
    var attrib = new ExtensionAttribute();
    Console.WriteLine(attrib);
}

そのコードを 4.5 ボックスでコンパイルしてから、4.0 ボックスで実行してみてください。結果は型ロード例外になります。このExtensionAttribute型は、4.0 の System.Core から 4.5 の mscorlib に移動しました。

于 2012-05-03T17:14:32.850 に答える
2

おそらく、より重要な質問は、「.NET 4.5 にはどの OS が必要ですか?」ということです。

まずはインストールページがこちら

http://msdn.microsoft.com/en-us/library/5a4x27ek

最大の問題は、Windows XP で 4.5 を実行できないことです。これは古すぎる (10 年以上)
ためです。したがって、これが環境で問題になる場合は、実行できると思い込まないでください。

4.5には、次のいずれかが必要です。

  • Windows 8 (32 ビットおよび 64 ビット版)
  • Windows 7 (32 ビットおよび 64 ビット版)
  • Windows Vista SP2 (32 ビット版および 64 ビット版)

  • Windows Server 2012 (64 ビット版)
  • Windows Server 2008 R2 (64 ビット版)
  • Windows Server 2008 SP2 (32 ビット版および 64 ビット版)
于 2012-09-04T19:21:08.647 に答える
1

これは、Metro スタイルのアプリを作成しているかどうかによって異なります。Metro スタイル アプリ (Windows 8) の場合、実際には、.NET 4.5 フレームワークのサブセットと特別な Metro 専用ランタイムを使用しています。他のすべてのアプリの場合、.NET 4.5 は .NET 4.0 ランタイムと追加のライブラリを使用します (.NET 3.0 および .NET 3.5 が .NET 2.0 ランタイムで実行できるのと同様)。

于 2012-05-03T17:16:36.133 に答える
1

CLR のバージョンは、1.0、1.1、2.0、および 4.0 です。.NET Framework の他のバージョンは、追加の型を提供するだけです。.NET 3 および 3.5 は CLR 2.0 で実行されます。.NET 4.5 は CLR 4 で実行されます。

注: 4.5 アプリを実行するには、引き続き .NET 4.5 が必要です。

于 2012-05-03T17:16:59.373 に答える
1

.Net 4.0 ランタイム。4.5 は、より多くの .Net ライブラリの利点です。CLR のバージョンは変更されていません。

C# でコーディングする場合、コンパイラは変更されますが、CLR 4.0 IL をコンパイルします。

http://www.infoq.com/news/2012/04/net-4-5-multitargeting

于 2012-05-03T17:13:07.907 に答える