如何正确访问当前AppDomain的PrivateBinPath属性?

时间:2009-08-28 16:45:50

标签: c# appdomain

由于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。

2 个答案:

答案 0 :(得分:6)

使用

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="AlternateLookupPath" />
    </assemblyBinding>
  </runtime>

根据http://msdn.microsoft.com/en-us/library/823z9h8w.aspxprivatePath已被解释为“应用程序基本目录的子目录”...所以我怀疑使用.\会以某种方式弄乱... < / p>

答案 1 :(得分:3)

来自文档:

  

如果指定的目录   PrivateBinPath不在   ApplicationBase,会被忽略。

因此,您需要确保添加的路径位于ApplicationBase下。

但这仅适用于app.config。如果需要在运行时执行此操作,请使用docs:

中所述的AssemblyResolve事件

http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx