web-dev-qa-db-ja.com

Visual Studio(C#、VB)の「32ビットを優先する」コンパイラフラグとはどういう意味ですか?

Visual Studio11開発者プレビューをインストールしました。 AnyCPUターゲットを指定してマネージド(C#、VB)アプリケーションをコンパイルすると、プロジェクトのプロパティに「32ビットを優先」という新しいオプションが表示されます。これはクラスライブラリのオプションではなく、トップレベルのアプリのオプションのようです。

このフラグは何を示していますか?

28
David Cuccia

アプリがAnyCpuであることを示している可能性がありますが、32ビットが使用可能な場合は、そのように実行する必要があります。これは理にかなっています-64ビットアプリはより多くのメモリを使用し、メモリスペースを必要としない場合もあります;)

13
TomTom

EDIT:「任意のCPU 32ビット優先」でコンパイルされたアプリケーションはx86、x64、およびARMと互換性がありますが、x86はx86、x64、およびARMではありません。詳細については、 this を参照してください。

3
Tomas Kubes

。NET4.5およびVisualStudio 11の時点でAnyCPUが実際に意味すること に良い記事があります。

あなたの質問に対する簡単な答えは、「AnyCPUのそのフレーバーを使用する場合、セマンティクスは次のとおりです。

プロセスが32ビットWindowsシステムで実行されている場合、プロセスは32ビットプロセスとして実行されます。 ILはx86マシンコードにコンパイルされます。プロセスが64ビットのWindowsシステムで実行されている場合、32ビットのプロセスとして実行されます。 ILはx86マシンコードにコンパイルされます。プロセスがARM Windowsシステムで実行される場合、32ビットプロセスとして実行されます。ILはARMマシンコードにコンパイルされます。違いは、 「任意のCPU32ビット優先」と「x86」の間はこれだけです。x86にコンパイルされた.NETアプリケーションはARM Windowsシステムでは実行できませんが、「任意のCPU32- 「ビット優先」アプリケーションは正常に実行されます。」

1
MBentley

正しくて簡単な答えは次のとおりです。

Application Arch.

0
Yousha Aleayoub