Можно ли установить путь проверки сборки без app.config? - PullRequest
12 голосов
/ 07 марта 2011

Мне нужно поместить DLL-файлы для моего приложения в подпапку. Можно установить эту подпапку через app.config:

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

Но по некоторым причинам я не хочу использовать файл .config в этом случае. Можно ли установить путь зондирования непосредственно из кода приложения? Я уверен, что библиотеки DLL всегда находятся в этой папке.

Есть идеи?

Ответы [ 2 ]

13 голосов
/ 07 марта 2011

Путь определения определяется AppDomainSetup для основного домена приложения. На хосте CLR по умолчанию этот AD создается автоматически до запуска вашего кода. Единственный способ настроить его - использовать файл .config, он должен иметь то же имя, что и exe. После чего все изменения, внесенные в код, не будут иметь эффекта.

Временные решения: создать собственную AD, чтобы вы могли изменить ее настройку или реализовать событие AppDomain.AssemblyResolve. Ни то, ни другое не выгодно отличается от простых решений: файл .config или просто сохранение сборки в нужном каталоге. YMMV.

4 голосов
/ 07 марта 2011

Вы можете просто подписаться на AppDomain.CurrentDomain.AssemblyResolve и проверить свое местоположение в обработчике ...

...