应用场景, 现在有工作目录
\bin
----main.exe
----\bin\binA\A.dll
----\bin\binA\A_relation1.dll (A.dll的依赖文件)
----\bin\binB\B.dll
----\bin\binB\B_relation1.dll (B.dll的依赖文件)
按照常规运行, a.dll,b.dll以及他的依赖文件都要放到 main.exe同级目录下
问题如果要分开运行应该如何处理呢?
1. 通过 AppDomain添加privatePath
AppDomain.CurrentDomain.AppendPrivatePath(".\\binA\\");
AppDomain.CurrentDomain.AppendPrivatePath(".\\binB\\");
2. 通过反射方式加载a.dll和b.dll
var assmebly = Assembly.LoadFrom(".\\binA\\A.dll");
3. 通过type.invoke方法调用方法
var type = assmebly.GetType("A.Program");
type.GetMethod("Main").Invoke(null, new object[] { new string[] { "test" } });
那么就可以将目录分开运行.
本文介绍了一种在不同目录下分别运行DLL及其依赖文件的方法。通过修改AppDomain的搜索路径,并利用反射加载指定目录中的DLL,最后通过类型调用执行DLL中的方法,实现了跨目录的DLL运行。


被折叠的 条评论
为什么被折叠?



