none
动态加载程序集中引用相同dll的问题 RRS feed

  • 问题

  •       我在主应用程序域中新建了一个应用程序域,并在新的应用程序域中动态加载dll,被动态加载的dll中引用了和主应用程序域中相同版本的dll(非GAC加载的),在这个新的域中反射生成被动态加载的dll中的对象时会产生TargetInvocationException.应该是由于主应用程序域和新建的域重复加载了相同的dll导致的。请问该怎么解决。
    2009年11月23日 14:49

答案

  • 你好!
         这个异常和加载关系不大,是你通过反射调用的方法引发的异常,你捕获TargetInvocationException这个异常,然后输出InnerException的信息就可以知道基础异常是什么了!
         然后检查那个方法就可以了!
         另外,如果你使用Assembly.Load方法,不会发生重复加载的问题,具体可以参考:
    http://www.cnblogs.com/xuefeng1982/archive/2009/11/09/1598956.html
    周雪峰
    2009年11月24日 0:36
    版主
  • 雪峰哥的这篇文章已经说得比较清楚
    TargetInvocationException 这个异常在很多情况下都要抛出 比如你调用一个WebService  但是不存在或者有异常也会出现的
    有可能不是你加载dll时出错 而是你调用的某个方法 访问一些资源没有权限等也可能会抛出这个异常
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    • 已标记为答案 YiChun Chen 2009年11月25日 8:57
    2009年11月24日 1:38
    版主

全部回复

  • 你好!
         这个异常和加载关系不大,是你通过反射调用的方法引发的异常,你捕获TargetInvocationException这个异常,然后输出InnerException的信息就可以知道基础异常是什么了!
         然后检查那个方法就可以了!
         另外,如果你使用Assembly.Load方法,不会发生重复加载的问题,具体可以参考:
    http://www.cnblogs.com/xuefeng1982/archive/2009/11/09/1598956.html
    周雪峰
    2009年11月24日 0:36
    版主
  • 雪峰哥的这篇文章已经说得比较清楚
    TargetInvocationException 这个异常在很多情况下都要抛出 比如你调用一个WebService  但是不存在或者有异常也会出现的
    有可能不是你加载dll时出错 而是你调用的某个方法 访问一些资源没有权限等也可能会抛出这个异常
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    • 已标记为答案 YiChun Chen 2009年11月25日 8:57
    2009年11月24日 1:38
    版主
  • 感谢,雪峰和Tang斑猪。thanks
    2009年11月24日 1:54
  • 不客气啊!
    周雪峰
    2009年11月24日 3:05
    版主