77

重複の可能性:
Visual Studio の「任意の CPU」ターゲット

VS で C# コードをコンパイルする場合、通常、32/64 ビット システム用にコンパイルするためのオプションがあり、任意の CPU 用にコンパイルするためのオプションもあることに気付きました。

2 つのオプションの違いは何ですか? 最初のオプションがマシンコードにコンパイルされるのに対し、CPUを選択すると中間バイトコードにコンパイルされるだけですか(これは私にはありそうにないように思えます)? または、他の何か?

4

2 に答える 2

193

32 ビットマシンの場合:

  • Any CPU : 32 ビット プロセスとして実行され、任意の CPUおよびx86アセンブリを読み込むことができ、 x64アセンブリBadImageFormatExceptionを読み込もうとすると取得されます。

  • x86 : Any CPUと同じ。

  • x64 :BadImageFormatException常に。

64 ビットマシンの場合:

  • Any CPU : 64 ビット プロセスとして実行され、任意の CPUおよびx64アセンブリを読み込むことができ、 x86アセンブリBadImageFormatExceptionを読み込もうとすると取得されます。

  • x86 : 32 ビット プロセスとして実行され、任意の CPUおよびx86アセンブリを読み込むことができ、 x64アセンブリBadImageFormatExceptionを読み込もうとすると取得されます。

  • x64 : Any CPUと同じ。

このフラグに基づいて、要求されたターゲットと互換性のあるアセンブリ コードを生成するのはJIT コンパイラです。

于 2011-03-08T07:54:46.447 に答える
19

x86 - ソフトウェアは、32 ビット システムと 64 ビット システムの両方で、常に 32 ビット モードで実行されます。

x64 - ソフトウェアは常に 64 ビット モードで実行され、64 ビット システムでは実行されますが、32 ビット システムでは実行されません。

任意の CPU - ソフトウェアは OS に従って実行されます。32 ビット OS を使用している場合、コードは 32 ビット モードで実行され、64 ビット OS を使用している場合、コードは 64 ビット モードで実行されます。

于 2011-03-08T07:54:22.027 に答える