質問: Oracle.Data.AccessやExcelCreatorを使用したアプリケーションの開発では、x64とx86のdllファイルが用意されています。 Oracle.Data.AccessやExcelCreatorはx64とx86でフォルダを分け、普段はx64のDll を参照し、x86の実行環境の場合にx86のDLLを使用するように、参照先を変更することは可能でしょうか。 調べているうちにSetDllDirectoryが挙げられていたのですが、 SetDllDirectoryを使用すると、他のDLLファイルの参照先も変わってしまうのでしょうか。
回答: マネージドアセンブリ自体がx86/x64で分かれていた場合は、Windowsの.NET Framework限定ですが、 AppDomain.AssemblyResolveイベントを使って、DLLを動的に読み出すという方法があります。 * https://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve(v=vs.110).aspx * http://d.hatena.ne.jp/masa_m/20130108/1357644226 ただし、PCLモジュールが混ざっている場合は、以下のURLのように一工夫必要です。 https://stackoverflow.com/questions/18793959/filenotfoundexception-when-trying-to-load-autofac-as-an-embedded-assembly 対象がネイティブDLLの場合、DllImportのパラメーターにx64用とx86用のものを指定したクラスをそれぞれ作っておいて、Environment.Is64BitProcessで呼ぶクラスを分けるという手段があります。