1. ホーム
  2. .net

C#は32/64ビット、または任意のCPUでコンパイルしますか?重複

2023-08-10 05:42:40

質問

重複の可能性があります。

Visual Studio の「任意の CPU」ターゲット

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

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

どのように解決するのですか?

について 32 ビット マシンで

  • 任意のCPU : 32-bit プロセスとして実行されます。 任意のCPU x86 アセンブリの場合は BadImageFormatException をロードしようとすると x64 アセンブリをロードしようとします。

  • x86 と同じです。 任意のCPU .

  • x64 : BadImageFormatException 常に

について 64 ビット マシンで

  • 任意のCPU : 64-bit プロセスとして実行されます。 任意のCPU x64 アセンブリの場合は BadImageFormatException をロードしようとすると x86 アセンブリをロードしようとします。

  • x86 : 32ビットプロセスとして実行されます。 任意のCPU x86 アセンブリの場合は BadImageFormatException をロードしようとすると x64 アセンブリをロードしようとします。

  • x64 と同じです。 任意のCPU .

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