Assembly.LoadFrom不在另一个项目中加载DLL

时间:2012-07-24 19:01:49

标签: c# reflection

我在给定的解决方案中有多个项目。 从ProjectA我将“myProjectB.dll”作为程序集名称传递给方法调用 在ProjectC中。

当我在ProjectC中执行以下命令时,其中assemblyname是“myProjectB.dll”

Assembly assembly = Assembly.LoadFrom(assemblyname);
foreach (Type type in assembly.GetTypes())
{
       ... my code ...
}

我收到以下错误

Could not load file or assembly 'file:///C:\MyProjectB\bin\Debug\myProjectB.dll' or one of its dependencies. The system cannot find the file specified.

请告诉我如何将程序集名称正确传递给Assembly.LoadFrom方法调用。

如何仅提供项目DLL名称,并能够通过解决方案并在运行时识别解决方案中该DLL的完整绝对路径。它甚至可能吗?

由于

1 个答案:

答案 0 :(得分:3)

如果程序集不在可执行文件的确切路径中,或者在GAC中,则需要在LoadFrom方法中提供完整路径。

例如:

Assembly assembly = Assembly.LoadFrom(@"C:\MyProjectB\bin\Debug\myProjectB.dll");

您还可以使用相对路径:

Assembly assembly = Assembly.LoadFrom(@"..\..\..\MyProjectB\bin\Debug\myProjectB.dll");