Any CPU - Prefer 32 bit オプションは何をしますか?
WinRT は exe を処理できず、Windows ストア アプリしか実行できないことは承知していますが、StackOverflowには同じ質問をするいくつかの質問があり、どちらも次のブログを参照しています。
.NET 4.5 と Visual Studio 11 ではチーズが移動されました。ほとんどの .NET プロジェクトのデフォルトは再び AnyCPU ですが、AnyCPU には複数の意味があります。AnyCPU の追加のサブタイプ「Any CPU 32 ビット優先」があり、これが新しいデフォルトです (全体として、/platform C# コンパイラ スイッチには、x86、Itanium、x64、anycpu、anycpu32bitpreferred の 5 つのオプションがあります)。 )。AnyCPU のそのフレーバーを使用する場合、セマンティクスは次のようになります。
- プロセスが 32 ビット Windows システムで実行されている場合、プロセスは 32 ビット プロセスとして実行されます。IL は x86 マシン コードにコンパイルされます。
- プロセスが 64 ビット Windows システムで実行される場合、32 ビット プロセスとして実行されます。IL は x86 マシン コードにコンパイルされます。
- プロセスが ARM Windows システムで実行される場合は、32 ビット プロセスとして実行されます。IL は ARM マシン コードにコンパイルされます。
しかし、Surface RT を購入した後、Hello World プログラムを作成し、Any CPU に設定し、Prefer 32 Bit フラグを確認し、コンパイルして Surface にコピーしました。プログラムを実行すると、OS は、プログラムを実行できず、x86/x64 exe の場合と同じように市場に目を向けるべきだと言いました。表示された正確なメッセージは、「このアプリはお使いの PC では実行できません。この PC 用のアプリを見つけるには、Windows ストアを開いてください。」
では、これは実際に何をするのでしょうか? また、ARM で Window RT 用の Any CPU アプリケーションをコンパイルすることは可能でしょうか?