如何从动态位置将C#dll加载到C#dll项目中?

时间:2011-11-23 17:09:56

标签: c# visual-studio-2010 dll

程序ClosedSourceProgram启动并将我的文件复制到一个未知位置。他们的结构将是:

?\project.dll
?\project\usefultools.dll

我必须将usefultools.dll加载到我的项目中,但我不知道如何告诉C#VS2010 dll位置将是

project\usefultools.dll

我将库添加到我的程序集作为参考,以便在开发过程中知道其内容 - 因此它尝试加载的时间早于我可以通过Assembly.LoadFrom()加载它。

我现在手动将文件复制到ClosedSourceProgram-root目录中。它现在加载时没有Assembly.LoadFrom()

当前工作树:

?\ClosedSourceProgram\ClosedSourceProgram.exe
?\ClosedSourceProgram\usefultools.dll
?\ClosedSourceProgram\temp\project.dll

我想要的树:

?\ClosedSourceProgram\ClosedSourceProgram.exe
?\ClosedSourceProgram\temp\project.dll
?\ClosedSourceProgram\temp\project\usefultools.dll

我想告诉我的项目它应该搜索子目录,如果它无法在根目录中找到dll - 我该怎么做?

3 个答案:

答案 0 :(得分:3)

您可以使用Assembly.LoadFrom从运行时的任意位置加载程序集,并传递文件名。


编辑:

另一种选择是订阅AppDomain.AssemblyResolve事件,并按需加载程序集。这样做的优点是允许任何结构,因为所有未发现的程序集都可以根据需要加载。

答案 1 :(得分:2)

您可以随时尝试Assembly.LoadFrom()

答案 2 :(得分:0)

如果程序集与任何子文件夹一起使用,则可以使用“〜”运算符 应用程序路径。

Assembly.LoadFrom( “〜\项目\ usefultools.dll”);

相关问题