这是我的情景:
我有三个项目:两个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。
有些观点:
所以一切都在同一个本地目录中,正在引用正确的dll(通过项目属性,我使用了Reflector来确保程序集版本是正确的)。如果我将bar.dll安装到GAC,一切都按预期工作。
我认为它与Assembly.LoadFile调用有关,并且跳转到第二个DLL,但我不确定。
感谢您的时间和意见。
答案 0 :(得分:4)
Assembly.LoadFile()只能在非常特殊的情况下使用。程序集没有加载上下文,这就是无法找到bar.dll的原因。唯一真实的用例是工具,即转储程序集元数据的程序。
使用Load或LoadFrom()。解决fuslogvw.exe的问题