.NET アプリケーションは Windows 2008 x64 でどのように動作しますか? 32 ビット アプリケーションとしてですか、それとも 64 ビット アプリケーションとしてですか? 違いはありますか?
6 に答える
64 ビット アーキテクチャをターゲットにしている場合、または任意のプラットフォームで実行するように設定されている場合は、64 ビットで実行されます。
32 ビット アーキテクチャをターゲットにしている場合は、32 ビットで実行されます。ネイティブ DLL を使用する必要がある場合は、それが正しくターゲットされていることを確認する必要があります。
これは、64 ビット Vista と同じように機能します。
「任意のマシンで実行するオプション」を指定してコンパイルすると、64 ビット アプリケーションとして実行されます。
「32 ビットとして実行」として強制的にコンパイルすると、x64 マシンで 32 ビット アプリとして実行されます。
ASP.Net アプリの場合、Web アプリのアプリケーション プールで「32 ビット アプリを有効にする」ように IIS を構成すると、32 ビットがエミュレートされます。
最後の質問は「依存」です
どのように構築したか、およびどのように構築する必要があったかによって異なります。:-) 特定のモデルを指定しなかった場合、アプリは x86 では 32 ビット、x64 では 64 ビットとして実行されます。これは一般的にあなたが望むものです。これに対する例外は、64 ビット システムで 32 ビット コードと相互運用している場合に発生します。たとえば、'int' が 32 ビットであることを期待する DLL を呼び出していて、それを 64 ビットで渡すと、事態は急速に悪化します。
「任意の」プラットフォームをターゲットにコピーされた .net コード (プロジェクトのビルド構成を確認してください) は、IL から 64 ビット マシン コード命令にコンパイルされます。32bit を指定すると、32bit にコンパイルされてから、64bit OS で実行されている 32bit マシン コードであるかのように変換されます。
一部のライブラリでは、64 ビット コードにコンパイルすると互換性の問題が発生します。
編集: XNA は、具体的に 32 をターゲットにしたい場所の例です。これをチェックしてください: http://www.brianpeek.com/blog/archive/2007/11/13/x64-development-with-net.aspx
注: Int は、実行しているプラットフォームに関係なく int ですか? それじゃない?
ここでの質問とそれに対する回答の後、アプリケーションを 64 ビットで実行できるようにするかどうかについてよく考えます。より成熟した 32 ビット JIT と比較して、64 ビット JIT は本当に制限されているようです。