1. ホーム
  2. .net

[解決済み] Microsoft.NETFrameworkとMicrosoft.NETFramework64の違いは何ですか?

2022-02-16 16:05:45

質問

.NETのモードx86とx64の違いを知りたいのですが。

  1. 両モードの違いは何ですか?

  2. 例えば.NET x64と.NET x86でライブラリーをコンパイルできますか?

  3. x86ではなくx64を選択した場合、何か違いがあるのでしょうか?

  4. .NET x64の利点は何ですか?

  5. .NET x64を使用する場合、何か特別なものをインストールしなければならないのでしょうか?

解決方法を教えてください。

複雑な質問ですが、簡単に説明します。

  1. どんな.Netアプリケーションでも、一度にx86(32ビット)とx64(64ビット)の両方にコンパイルすることができます。実際、デフォルトでそうなっています。プロジェクトプロパティのビルドタブでターゲットCPUを変更することで変更できます。サポートされているターゲットは、"Any"(オペレーティングシステムのサポートに応じて32ビットまたは64ビットにジャストインタイムコンパイルします)、"x86"は32ビットにコンパイルしてすべてのプラットフォームで動作し、"x64"は64ビットコンパイルして64ビットプラットフォームでのみ機能するものです。

  2. はい、上記をご参照ください。また、時々実行される2番目のレベルのコンパイルがあり、それはNGENであることに注意してください。これは特定のCPUタイプ用のネイティブイメージを作成するものです。しかし、これに手を出すともうわかってしまいます。

  3. .dllの場合は、CPUを"Any"を選択してください。.EXE(エントリポイント)については、Any、x86、x64のいずれかを選択する必要があります。x86 .Net アプリが Windows ネイティブの .dll ファイルにアクセスする場合(インターポ)、x86 .dll ファイルが必要になるため、考慮すべき点があります。つまり、64ビットアプリケーションは32ビットのAPIコールにアクセスできませんし、その逆も同様です。これは、64ビットオペレーティングシステム上で.Netアプリが失敗する理由となることがよくあります。これを解決するには、正しい.dllを参照するか、プロパティで.Netアプリケーションをx86(32ビット)に設定するだけです。その他の依存関係は、"Any"に設定されていれば、ジャストインタイム コンパイル時に自動的に32ビットになります。

  4. 64ビットの利点は複雑です。アプリが何をするかによって、利点と欠点があります。最も明白な利点は、アプリケーションが2GBのメモリの壁を破ることができることです。欠点は、#3で説明したように、64ビットの.dllを参照すると、アプリが32ビットオペレーティングシステムで実行されないことです。

  5. 全ては箱から出してすぐに使える。上記以外のことは心配しないでください。:)