3

Any CPUを対象とするアプリケーションがあるとしますが、このアプリケーションは、32ビットと64ビットの2つのフレーバーを持つサードパーティのアセンブリを使用します。それらのどれを使用する必要がありますか?

「任意」オプションでアプリケーションを32ビットと64ビットの両方で実行する場合、2つのバージョンのアセンブリを指定するにはどうすればよいですか。

私が特に必要としているのは、.NETSQLiteドライバーです。

4

2 に答える 2

2

本当に簡単です:

  • アプリのターゲットを「任意の CPU」にする場合、すべての条件が同じであれば、アプリは 32​​ ビットまたは 64 ビット システムで実行できます。

  • 「任意の CPU」アプリが 32 ビットまたは 64 ビットの dll に依存している場合、依存関係がないシステムで実行しようとすると失敗します。

  • 「どこでも実行」したい場合は、(「すべての CPU」ではなく) 32 ビットをターゲットにするのが最善の策かもしれません。64 ビットに特別な要件がない限り、実際には 64 ビットは必要ありません。

  • アプリを 64 ビット ランドで実行しているときに "BadImageExceptions" が発生した場合は、"カスタム アクション" を検討することをお勧めします。

    http://adamhouldsworth.blogspot.com/2010/10/64bit-custom-actions.html

于 2012-12-27T05:37:21.997 に答える
0

アセンブリを静的に参照する可能性が最も高いため、アプリケーションの 2 つのエディション (x86 としてコンパイルされたものと x64 としてコンパイルされたもの) が必要になります。

私は特に Sqllite ドライバーについて詳しくはありませんが、通常は x86 バージョンのドライバーを使用するだけで十分です。これは、WOW32 エミュレーションのメカニズムを介して x64 システムで実行されます。これは、x86 システムと x64 システムの両方にインストールするために 1 つのバージョン (x86) だけをコンパイルできることを意味します (前の質問で Mark Hall が述べたように)。x64 固有の機能 (より大きなデータ型、より多くの利用可能な RAM など) を使用する場合にのみ、x64 用にコンパイルする必要があります。

于 2012-12-27T05:35:22.373 に答える