由于AppDomain.AppendPrivatePath()已过时,我正在尝试弄清楚如何为我项目中的当前AppDomain指定PrivateBinPath,而无需启动全新的AppDomain,并且以后能够访问它。
我知道我可以在AppDomainSetup对象上设置PrivateBinPath(如果我想创建一个新的AppDomain就可以了),我也知道我可以将它添加到我的app.config中,如下所示:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath=".\AlternateLookupPath" />
</assemblyBinding>
</runtime>
但是,将此条目添加到我的app.config时,AppDomain.CurrentDomain.SetupInformation.PrivateBinPath属性为null。
答案 0 :(得分:6)
使用
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="AlternateLookupPath" />
</assemblyBinding>
</runtime>
根据http://msdn.microsoft.com/en-us/library/823z9h8w.aspx,privatePath
已被解释为“应用程序基本目录的子目录”...所以我怀疑使用.\
会以某种方式弄乱... < / p>
答案 1 :(得分:3)
来自文档:
如果指定的目录 PrivateBinPath不在 ApplicationBase,会被忽略。
因此,您需要确保添加的路径位于ApplicationBase下。
但这仅适用于app.config。如果需要在运行时执行此操作,请使用docs:
中所述的AssemblyResolve事件http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx