程序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 - 我该怎么做?
答案 0 :(得分:3)
您可以使用Assembly.LoadFrom从运行时的任意位置加载程序集,并传递文件名。
编辑:
另一种选择是订阅AppDomain.AssemblyResolve事件,并按需加载程序集。这样做的优点是允许任何结构,因为所有未发现的程序集都可以根据需要加载。
答案 1 :(得分:2)
您可以随时尝试Assembly.LoadFrom()
答案 2 :(得分:0)
如果程序集与任何子文件夹一起使用,则可以使用“〜”运算符 应用程序路径。
Assembly.LoadFrom( “〜\项目\ usefultools.dll”);