Можно ли установить путь пробной сборки без приложения app.config?
Мне нужно разместить DLL для моего приложения внутри подпапки. Можно установить эту подпапку через app.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Libs"/>
</assemblyBinding>
</runtime>
Но по некоторым причинам я не хочу использовать файл .config в этом случае. Возможно ли установить путь исследования непосредственно из кода приложения? Я уверен, что DLL всегда находятся в этой папке.
Любые идеи?
Ответы
Ответ 1
Путь зондирования определяется AppDomainSetup для основного домена приложения. На хосте CLR по умолчанию этот AD автоматически создается до запуска вашего кода. Единственный способ настроить его настройку - использовать файл .config, он должен иметь то же имя, что и exe. После этого он будет заморожен, любые изменения, внесенные вами в ваш код, не будут иметь эффекта.
Временные решения - создать свой собственный AD, чтобы вы могли изменить его настройку или реализовать событие AppDomain.AssemblyResolve. Ни один из них не выгодно отличается от простых решений: файла .config или просто сохранения сборки в правильном каталоге. YMMV.
Ответ 2
Вы можете просто подписаться на AppDomain.CurrentDomain.AssemblyResolve и проверить свое конкретное местоположение в своем обработчике...