Как правильно получить доступ к свойству PrivateBinPath текущего AppDomain? - PullRequest
6 голосов
/ 28 августа 2009

Поскольку AppDomain.AppendPrivatePath () устарел, я пытаюсь выяснить, как указать PrivateBinPath для текущего AppDomain в моем проекте, не раскручивая совершенно новый AppDomain и не имея возможности получить к нему доступ позже.

Я знаю, что могу установить PrivateBinPath для объекта AppDomainSetup (что было бы хорошо, если бы я хотел создать новый домен 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 ]

6 голосов
/ 18 сентября 2011

использование

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

Согласно http://msdn.microsoft.com/en-us/library/823z9h8w.aspx privatePath уже интерпретируется как «подкаталоги основного каталога приложения» ... поэтому я подозреваю, что использование .\ как-то портит ...

3 голосов
/ 28 августа 2009

Из документов:

Если каталоги указаны для PrivateBinPath не находятся под ApplicationBase, они игнорируются.

Итак, вам нужно убедиться, что пути, которые вы добавляете, находятся в ApplicationBase.

Однако это работает только с app.config. Если вам нужно сделать это во время выполнения, используйте событие AssemblyResolve, как описано в документации:

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

...