2つのバージョン(1つは32ビット用、もう1つは64ビット用)で利用可能なDLLを参照する必要があります。私の目標は、32ビットシステムと64ビットシステムの両方で動作するWebアプリケーションを構築することです。
デフォルトで32ビットアセンブリを参照し、AssemblyResolveイベントを使用して64ビットバージョンをロードすることを考えました(32ビットバージョンのロードに失敗した場合)。
static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += _AssemblyResolve;
// Try LoadAssembly ...
}
static System.Reflection.Assembly _AssemblyResolve(object sender, ResolveEventArgs args)
{
var path = string.Format(@"...\lib_x64\{0}.dll", args.Name);
return Assembly.LoadFrom(path);
}
ただし、BadImageFormatExceptionが発生した場合でも、_AssemblyResolveハンドラーは呼び出されません。提案された動作を実現する他の方法はありますか?