我正在处理装配项目,外部程序通过装配程序执行。
由于外部应用,System.Environment.CurrentDirectory
汇编和Application.ExecutablePath
路径不同。
System.Environment.CurrentDirectory
是装配路径。
Application.ExecutablePath
外部应用程序路径。
反序列化时会抛出expcetion
未找到装配
因为"Application.ExecutablePath "
没有我的dll。
所以我想更改使用System.Environment.CurrentDirectory
路径进行反序列化。
答案 0 :(得分:3)
我建议在当前域上设置AssemblyResolve事件。 这样,您可以明确地确定DLL的位置,并在未自动找到它们时加载它们。
Jeremy Tammik在这里写到: http://thebuildingcoder.typepad.com/blog/2014/05/rvtva3c-assembly-resolver.html
唯一需要注意的是,您应该确保事件专门针对您的DLL(而不是任何DLL) - 如果它不适合您加载DLL,则返回null(我偶尔会遇到其他人的插件不能很好地实现这一点的场景,并且它会让我的插件搞砸了。)