【问题标题】:Could not load assembly exception when using Assembly.LoadFile使用 Assembly.LoadFile 时无法加载程序集异常
【发布时间】:2010-12-01 01:00:55
【问题描述】:

这是我的场景:

我有三个项目:两个 DLL 和一个控制台应用程序,我们将它们命名为 foo.dll、bar.dll 和 console.exe。 Console.exe 使用 Assembly.LoadFile(@"c:\foo.dll") 加载 foo.dll。 Foo.dll 的项目引用了 bar.dll 并使用了一个类。 Console.exe 加载 foo.dll 很好,当 foo.dll 尝试使用 bar.dll 的类时会出现问题。我收到“无法加载程序集:“bar.dll”等等等等异常。

几点:

  • 所有项目都有强命名
  • 宁愿不使用 GAC
  • Bar.dll 位于 c:\bar.dll

所以一切都在同一个本地目录中,正确的 dll 被引用(通过项目属性,我使用 Reflector 来确保程序集版本是正确的)。如果我将 bar.dll 安装到 GAC,一切都会按预期工作。

我认为这与 Assembly.LoadFile 调用有关,并跳转到第二个 DLL,但我不确定。

感谢您的宝贵时间和意见。

【问题讨论】:

    标签: c# reflection dll gac


    【解决方案1】:

    Assembly.LoadFile() 只能在非常特殊的情况下使用。该程序集没有加载上下文,这就是找不到 bar.dll 的原因。唯一真正的用例是工具,即转储程序集元数据的程序。

    使用 Load 或 LoadFrom()。解决 fuslogvw.exe 的问题

    【讨论】:

    • 非常感谢,汉斯!我尝试了这两种方法并让每一种都起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多