P/Invoke (DllImport) 署名によって参照される特定の DLL を CPU アーキテクチャに依存させる方法はありますか?
私は、サード パーティ ベンダーのネイティブ dll (この場合はハードウェアのユーザー空間インターフェイス DLL) から多数のメソッド シグネチャをロードするアプリケーションに取り組んでいます。そのベンダーは現在、x86 バージョンと x64 バージョンの両方の DLL の提供を開始しており、私のアプリは 64 ビット プロセスとして実行することでメリットが得られると思います。この 1 つの DLL を除いて、すべてが .NET コードであるため、「任意の CPU」としてビルドできます。
ネイティブ DLL のすべてのメソッド シグネチャは 64 ビットでも同じですが、DLL の名前が異なります (Foo.dll と Foo_x64.dll)。P/Invoke シグネチャまたは app.config エントリを使用して、実行中の CPU アーキテクチャに基づいてロードする DLL を選択する方法はありますか?
異なる DLL 名ではなく、異なるフォルダーで同じ名前だった場合、他のオプションが開きますか?
注: このユーザー空間 DLL のバージョンがハードウェア用にインストールされたカーネル ドライバーと一致することが不可欠であるため、DLL はアプリにバンドルされていませんが、代わりに、ベンダーのインストーラーに依存して %道%。