0

我想在同一个进程中加载​​同一个 dll 的两个不同版本。同时,我想避免将它们中的任何一个放在 GAC 中。

有任何想法吗?

谢谢,克里科尔

4

2 回答 2

0

激活器.CreateInstance。检查 msdn 以获取示例。

于 2010-01-08T16:31:18.693 回答
0

是的,似乎我必须以一种或另一种方式手动加载程序集。

我发现的一种解决方案是订阅 appDomain 的 AssemblyResolve 事件。当未找到程序集并允许您手动提供程序集时会引发此事件。

  1. 像这样重新注册一个事件处理程序

AppDomain.CurrentDomain.AssemblyResolve += MyResolveEventHandler;

静态程序集 MyResolveEventHandler(object sender, ResolveEventArgs args) { return Assembly.LoadFrom(@"OldAsm\Asm.dll"); }

  1. 一旦到达使用特定代码的代码,.NET Framework 将尝试加载程序集,它将崩溃并调用您的处理程序 (MyResolveEventHandler)。

我将继续寻找一种方法来解决正确的引用,而无需编写任何代码,也不必在 GAC 中添加任何内容。如果有人找到方法,请发布。

谢谢

于 2010-01-10T20:03:46.577 回答