如何从动态位置加载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 -我怎么能做到这一点?
可以在运行时使用assembly从任意位置加载程序集。LoadFrom,并传递文件名。
编辑:
另一个选择是订阅AppDomain。AssemblyResolve事件,并根据需要加载程序集。这样做的好处是允许任何结构,因为您可以根据需要加载所有未发现的程序集。
你可以试试Assembly.LoadFrom()
如果程序集位于任何子文件夹中,则可以使用"~"操作符
Assembly.LoadFrom("项目~ ' ' usefultools.dll");