C#アプリケーションを64ビットマシンにデプロイする必要がありますが、32ビットマシンにもデプロイできる可能性はわずかにあります。 x86およびx64プラットフォームをターゲットとする2つの個別の実行可能ファイルをビルドする必要がありますか、それとも「AnyCPU」プラットフォーム(プロジェクトプロパティのビルドオプションで指定)をターゲットとしてビルドされた単一の実行可能ファイルを使用する必要があります。「AnyCPU」をターゲットとしてビルドされたC#アセンブリ間にパフォーマンスの違いはありますか?特に「x64」プラットフォームを対象に構築された同じアセンブリに対して、64ビットマシンにデプロイされていますか?
いいえ、64ビットWindowsで実行されているAnyCPUアプリケーションとその上で実行されているx64アプリケーションのパフォーマンスに違いはありません。フラグが変更されるのは、コンパイルされたアセンブリのヘッダーにあるいくつかのフラグだけであり、CLRはそれを使用して、x86とx64のどちらを使用するかを決定します。
64ビットWindowsで実行されているx86アプリケーションとx64(またはAnyCPU)の間に違いがあるかどうかを尋ねている場合、答えは「はい」です。 2つの違いは次のとおりです。
tail.
を使用して特に要求しなくても、 末尾呼び出しの最適化 を使用することがあります。命令(たとえば、C#は決して実行しません)上記の回答の補足として。 can AnyCPUを使用してx64OS上のx86DLLにP/InvokeまたはDotNetInteropを使用すると問題が発生します。 DLLの64ビットバージョンが利用できない場合、OSは64ビットバージョンをロードしようとするため、AnyCPUではなくx86をコンパイルする必要があるかもしれません...そして不合格。