我需要引用一个 DLL,它有 2 个版本(一个用于 32 位,一个用于 64 位)。我的目标是构建一个适用于 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 处理程序。有没有其他方法可以实现建议的行为?