加载同一dll的多个版本,而不将其放入GAC

时间:2010-01-08 16:28:25

标签: assemblies gac versions

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

有什么想法吗?

谢谢, Krikor

2 个答案:

答案 0 :(得分:0)

Activator.CreateInstance。检查msdn以获取示例。

答案 1 :(得分:0)

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

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

  1. 重新注册这样的事件处理程序
  2. AppDomain.CurrentDomain.AssemblyResolve + = MyResolveEventHandler;

    静态程序集MyResolveEventHandler(对象发送者,ResolveEventArgs args) {   return Assembly.LoadFrom(@“OldAsm \ Asm.dll”); }

    1. 一旦达到使用特定代码的代码,.NET Framework将尝试加载程序集,它将崩溃并将调用您的处理程序(MyResolveEventHandler)。
    2. 我会一直在寻找一种方法来解决正确的引用,而无需编写任何代码,也无需在GAC中添加任何内容。如果有人找到方法,请发布。

      由于