コンパイラが必要なときに64ビット用にコンパイルすることを自動的にどのように認識するかは私にはわかりません。自信を持って32ビットをターゲットにできるのはいつですか?
私は主に、コンパイラがコンパイル時にどのアーキテクチャを対象とするかを知りたいと思っています。コードを分析し、検出した内容に基づいて決定を下しますか?
Microsoftにはブログエントリ。NET 4.5およびVisual Studio 11のAnyCPUの実際の意味があります。
.NET 4.5およびVisual Studio 11では、チーズが移動されました。ほとんどの.NETプロジェクトのデフォルトはやはりAnyCPUですが、現在AnyCPUには複数の意味があります。 AnyCPUのサブタイプ「Any CPU 32-bit preferred」が追加されました。これは新しいデフォルトです(全体的に、/ platform C#コンパイラスイッチにはx86、Itanium、x64、anycpu、anycpu32bitpreferredの5つのオプションがあります。 )。 AnyCPUの「Preferred 32-Bit」フレーバーを使用する場合、セマンティクスは次のとおりです。
- プロセスが32ビットWindowsシステムで実行される場合、32ビットプロセスとして実行されます。 ILはx86マシンコードにコンパイルされます。
- プロセスが64ビットWindowsシステムで実行される場合、32ビットプロセスとして実行されます。 ILはx86マシンコードにコンパイルされます。
- プロセスがARM Windowsシステムで実行される場合、32ビットプロセスとして実行されます。 ILは、ARMマシンコードにコンパイルされます。
「Any CPU 32-bit preferred」と「x86」の違いはこれだけです。x86にコンパイルされた.NETアプリケーションはARMでの実行に失敗します_ Windowsシステム、ただし「Any CPU 32-bit preferred」アプリケーションは正常に実行されます。
その理由は、64ビットアプリケーションでより多くのメモリを使用したくない場合です。つまり、アプリケーションがAnyCPUの場合、32ビットとして実行する必要があります。
さらに追加するには、Visual Studioの設定は特定のCLRを対象とします。
Visual Studioは、x86コンピューターに32ビットバージョンのCLRをインストールし、64ビットWindowsコンピューターに32ビットバージョンと適切な64ビットバージョンのCLRの両方をインストールします。 (Visual Studioは32ビットアプリケーションであるため、64ビットシステムにインストールすると、WOW64で実行されます。)
記事64ビットアプリケーション( MSDN )を参照してください。