【发布时间】:2017-09-28 03:24:17
【问题描述】:
我正在尝试使用 AssemblyResolve 来解决 AnyCPU 平台的依赖关系。
我有 3 个课程:
class Resolver {
public static void Startup() { }
static Resolver()
{
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
}
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs
...
}
}
class Foo {
private ClassFromAssembly _foo;
public Foo() {
_foo = new ClassFromAssembly();
}
}
class Bar {
static Bar() {
Resolver.Setup();
}
public voidFoo() {
var foo = new Foo();
//...
}
}
我正在尝试使用 AssemblyResolve 事件加载 ClassFromAssembly 类。
但似乎AssemblyResolve 从未被解雇。
我有两个包含ClassFromAssembly 的DLL,一个用于x86,一个用于x64。
我想在 AnyCPU 平台上动态加载它们,但 AssemblyResolve 从未触发过。
为什么AssemblyResolve 不开火?
【问题讨论】:
-
可能,因为您从
Bar引用Foo,所以在您执行Resolver.Setup之前,程序集已被解析。在调试中运行时查看 Visual Studio 中的输出窗口,以准确了解加载程序集的时间 -
看来DLL加载之后我设置了事件
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
标签: c# .net assemblies