7

C# に基づいて開発された Windows アプリがあるとします。32 ビットと 64 ビットの両方で動作することを確認したいと思います。しかし、構成設定やアプリケーション設定を何度も変更したくありません。両方のバリアントをテストする方法はありますか?

4

2 に答える 2

12

いくつかのオプションがあります。

  1. をターゲットにすることができAnyCPUます。プログラムが100%C#/マネージコードであり、ネイティブの依存関係がない場合、これにより、64ビットオペレーティングシステムでは64ビット、32ビットオペレーティングシステムでは32ビットが実行されます。

  2. x86をターゲットにします。これにより、どこでも32ビットで実行され、64ビットWindowsで正しく動作します(WOW64経由)。これは、ネイティブ(32ビット)ライブラリを使用している場合にも正しく機能します。

  3. 2つのビルドと、2つの別々のデプロイメントを作成します。これにより、ネイティブコードを使用し、64ビットオペレーティングシステムで64ビットを実行できますが、作業量ははるかに多くなります。

32ビットアプリケーションは64ビットオペレーティングシステムで適切に実行されるため、プログラムを64ビットでネイティブに実行する理由はほとんどありません。これは通常、大量のデータを処理していて、32ビットプロセスで取得できるよりも大きなメモリスペースに本当にアクセスする必要がある場合にのみ、本当に有益です。.NETでは、これは通常、プログラムに1.2〜1.6 GBを超えるRAMを使用する場合は、64ビットをビルドする必要があることを意味します。それ以外の場合、32ビットはどこでも正常に動作します。

于 2012-07-09T17:09:51.053 に答える
3

AnyCPUをターゲットにしている場合、ほとんどの.NETプログラムは32ビットまたは64ビットのマシンで変更されずに実行されます。コードは、ターゲットオペレーティングシステムに応じて、32ビットまたは64ビットのコードに変換されます。

注意が必要な例外は、アンマネージコードへの相互運用を使用する場合です。

アンマネージコードと相互運用し、64ビットプラットフォームで64ビットとして実行する必要がある場合は、2つのビルドを行う必要があります。

アンマネージコードと相互運用し、32ビットプロセスとしての実行を受け入れることができる場合は、x86をターゲットにします。これにより、2つのビルドが回避され、.NETコードが32ビットおよび64ビットプラットフォームで32ビットプロセスとして実行されます。

于 2012-07-09T17:10:19.197 に答える