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

时间:2010-12-01 01:00:55

标签: c# reflection dll gac

这是我的情景:

我有三个项目:两个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 exception。

有些观点:

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

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

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

感谢您的时间和意见。

1 个答案:

答案 0 :(得分:4)

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

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