如何从动态位置加载c# dll到c# dll项目

本文关键字:dll 项目 加载 位置 动态 | 更新日期: 2023-09-27 18:15:46

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

?'project.dll
?'project'usefultools.dll

我必须加载有用的工具。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 -我怎么能做到这一点?

如何从动态位置加载c# dll到c# dll项目

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


编辑:

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

你可以试试Assembly.LoadFrom()

如果程序集位于任何子文件夹中,则可以使用"~"操作符

Assembly.LoadFrom("项目~ ' ' usefultools.dll");