C# に基づいて開発された Windows アプリがあるとします。32 ビットと 64 ビットの両方で動作することを確認したいと思います。しかし、構成設定やアプリケーション設定を何度も変更したくありません。両方のバリアントをテストする方法はありますか?
2 に答える
いくつかのオプションがあります。
をターゲットにすることができ
AnyCPU
ます。プログラムが100%C#/マネージコードであり、ネイティブの依存関係がない場合、これにより、64ビットオペレーティングシステムでは64ビット、32ビットオペレーティングシステムでは32ビットが実行されます。x86をターゲットにします。これにより、どこでも32ビットで実行され、64ビットWindowsで正しく動作します(WOW64経由)。これは、ネイティブ(32ビット)ライブラリを使用している場合にも正しく機能します。
2つのビルドと、2つの別々のデプロイメントを作成します。これにより、ネイティブコードを使用し、64ビットオペレーティングシステムで64ビットを実行できますが、作業量ははるかに多くなります。
32ビットアプリケーションは64ビットオペレーティングシステムで適切に実行されるため、プログラムを64ビットでネイティブに実行する理由はほとんどありません。これは通常、大量のデータを処理していて、32ビットプロセスで取得できるよりも大きなメモリスペースに本当にアクセスする必要がある場合にのみ、本当に有益です。.NETでは、これは通常、プログラムに1.2〜1.6 GBを超えるRAMを使用する場合は、64ビットをビルドする必要があることを意味します。それ以外の場合、32ビットはどこでも正常に動作します。
AnyCPUをターゲットにしている場合、ほとんどの.NETプログラムは32ビットまたは64ビットのマシンで変更されずに実行されます。コードは、ターゲットオペレーティングシステムに応じて、32ビットまたは64ビットのコードに変換されます。
注意が必要な例外は、アンマネージコードへの相互運用を使用する場合です。
アンマネージコードと相互運用し、64ビットプラットフォームで64ビットとして実行する必要がある場合は、2つのビルドを行う必要があります。
アンマネージコードと相互運用し、32ビットプロセスとしての実行を受け入れることができる場合は、x86をターゲットにします。これにより、2つのビルドが回避され、.NETコードが32ビットおよび64ビットプラットフォームで32ビットプロセスとして実行されます。