227

ここに画像の説明を入力してください

必要なときにコンパイラが 64 ビット用にコンパイルすることを自動的に認識する方法は、私にはわかりません。自信を持って 32 ビットをターゲットにできる時期を、どのようにして知るのでしょうか?

私は主に、コンパイル時にどのアーキテクチャをターゲットにするかをコンパイラがどのように認識するかについて興味があります。コードを分析し、発見した内容に基づいて決定を下しますか?

4

3 に答える 3

236

Microsoft にはブログ エントリWhat AnyCPU Really Means As Of .NET 4.5 and Visual Studio 11があります。

.NET 4.5 と Visual Studio 11 ではチーズが移動されました。ほとんどの .NET プロジェクトのデフォルトは再び AnyCPU ですが、AnyCPU には複数の意味があります。AnyCPU の追加のサブタイプ「Any CPU 32 ビット優先」があり、これが新しいデフォルトです (全体として、/platform C# コンパイラ スイッチには、x86、Itanium、x64、anycpu、anycpu32bitpreferred の 5 つのオプションがあります)。 )。AnyCPU の「32 ビット優先」フレーバーを使用する場合、セマンティクスは次のようになります。

  • プロセスが 32 ビット Windows システムで実行されている場合は、32 ビット プロセスとして実行されます。IL は x86 マシン コードにコンパイルされます。
  • プロセスが 64 ビット Windows システムで実行されている場合は、32 ビット プロセスとして実行されます。IL は x86 マシン コードにコンパイルされます。
  • プロセスが ARM Windows システムで実行される場合は、32 ビット プロセスとして実行されます。IL は ARM マシン コードにコンパイルされます。

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

于 2012-08-22T05:36:20.870 に答える
-1

その理由は、64 ビット アプリケーションでより多くのメモリを使用したくない場合です。つまり、アプリケーションがAnyCPUの場合、32 ビットで実行する必要があります。

さらに追加するには、Visual Studio の設定で特定の CLR をターゲットにします。

Visual Studio は、x86 コンピューターに CLR の 32 ビット バージョンをインストールし、64 ビット Windows コンピューターに CLR の 32 ビット バージョンと適切な 64 ビット バージョンの両方をインストールします。(Visual Studio は 32 ビット アプリケーションであるため、64 ビット システムにインストールすると、WOW64 で実行されます。)

64 ビット アプリケーション( MSDN )の記事を参照してください。

于 2012-08-22T05:23:57.187 に答える