使用Assembly.LoadFile时出现无法加载程序集的异常

4

这是我的情况:

我有三个项目:两个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”blah blah异常。

以下是一些要点:

  • 所有项目都经过强名称
  • 不希望使用GAC
  • Bar.dll在c:\bar.dll中

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

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

感谢您的时间和意见。

1个回答

5

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

请使用Load或LoadFrom()。使用fuslogvw.exe来排除问题。


非常感谢,汉斯!我尝试了两种方法,每一种都成功了。 - Eckstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接