サードパーティライブラリを扱う際に、CPUモードでプロジェクトを構築するにはどうすればよいですか?
-
27-10-2019 - |
質問
32ビットまたは64ビット.dllsのいずれかでダウンロードできるサードパーティライブラリがあります。私の開発マシンは32ビットのWindows 7を実行しています。ターゲット生産マシンは64ビットWindows Server 2008 R2を実行しています。私のプロジェクトソリューションは現在、あらゆるCPUモードで構築されています。
プロジェクトを複製する必要なく、このケースを処理するエレガントな方法はありますか(MyProject32とMyProject64は、それぞれがサードパーティライブラリの適切な32または64ビットバージョンを参照しています)?
私が考えた最初の解決策は、 AppDomain.AssemblyResolve
イベント, 、そして、私の第三者図書館を独自の32ビットと64ビットのサブフォルダーに持っています。次に、現在のモードに基づいて適切なアセンブリを動的にロードします。
私が考えた2番目の解決策は、32ビットモードのみで構築することであり、32ビットのサードパーティライブラリのみを使用することです(これは私にとって警官のようです...)。
どちらの解決策も私を特にきれいに感じさせません...どんなアドバイスでも役立つでしょう!
解決
これが社内プログラムである場合、問題はありません。開発マシンに32ビットDLLを取り付け、64ビットDLLを生産マシンに取り付けます。間違ったマシンに間違ったDLLをインストールしないでください。社内アプリでは、マシン上の間違ったDLLの問題は、DLLをまったく持っていないこととほぼ同等です。
これが配布するアプリケーションである場合、または適切な場所に正しいDLLを持っているマシンに依存できない場合、最初のソリューションは合理的に聞こえます。ロードします。または、ロードできない場合は、問題が何であるかを示すエラーメッセージを表示します。