Any CPUを対象とするアプリケーションがあるとしますが、このアプリケーションは、32ビットと64ビットの2つのフレーバーを持つサードパーティのアセンブリを使用します。それらのどれを使用する必要がありますか?
「任意」オプションでアプリケーションを32ビットと64ビットの両方で実行する場合、2つのバージョンのアセンブリを指定するにはどうすればよいですか。
私が特に必要としているのは、.NETSQLiteドライバーです。
Any CPUを対象とするアプリケーションがあるとしますが、このアプリケーションは、32ビットと64ビットの2つのフレーバーを持つサードパーティのアセンブリを使用します。それらのどれを使用する必要がありますか?
「任意」オプションでアプリケーションを32ビットと64ビットの両方で実行する場合、2つのバージョンのアセンブリを指定するにはどうすればよいですか。
私が特に必要としているのは、.NETSQLiteドライバーです。
本当に簡単です:
アプリのターゲットを「任意の CPU」にする場合、すべての条件が同じであれば、アプリは 32 ビットまたは 64 ビット システムで実行できます。
「任意の CPU」アプリが 32 ビットまたは 64 ビットの dll に依存している場合、依存関係がないシステムで実行しようとすると失敗します。
「どこでも実行」したい場合は、(「すべての CPU」ではなく) 32 ビットをターゲットにするのが最善の策かもしれません。64 ビットに特別な要件がない限り、実際には 64 ビットは必要ありません。
アプリを 64 ビット ランドで実行しているときに "BadImageExceptions" が発生した場合は、"カスタム アクション" を検討することをお勧めします。
http://adamhouldsworth.blogspot.com/2010/10/64bit-custom-actions.html
アセンブリを静的に参照する可能性が最も高いため、アプリケーションの 2 つのエディション (x86 としてコンパイルされたものと x64 としてコンパイルされたもの) が必要になります。
私は特に Sqllite ドライバーについて詳しくはありませんが、通常は x86 バージョンのドライバーを使用するだけで十分です。これは、WOW32 エミュレーションのメカニズムを介して x64 システムで実行されます。これは、x86 システムと x64 システムの両方にインストールするために 1 つのバージョン (x86) だけをコンパイルできることを意味します (前の質問で Mark Hall が述べたように)。x64 固有の機能 (より大きなデータ型、より多くの利用可能な RAM など) を使用する場合にのみ、x64 用にコンパイルする必要があります。