Могу ли я указать каталоги зависимостей при динамической загрузке сборок? - PullRequest
1 голос
/ 25 июля 2011

Мне интересно, возможна ли такая установка:

c: \ eflow \ proxy.dll (основная DLL, загружаемая приложением) c: \ eflow \ application \ dynamic.dll (DLL, динамически загружаемая proxy.dll) c: \ eflow \ dependency.dll (зависимая DLL требуется для dynamic.dll)

По сути, я хотел бы динамически загружать DLL (для создания экземпляров классов и т. Д.), Но иметь зависимости этой DLL, хранящиеся в другом месте.

Возможно ли это? Я не хочу иметь копии этих зависимых библиотек DLL в каждом подкаталоге ... (и я не могу загрузить их в GAC, потому что они не подписаны и являются сторонними DLL)

1 Ответ

3 голосов
/ 25 июля 2011

Да, вы можете сделать это.

Обрабатывая событие AppDomain.AssemblyResolve , вы можете загружать зависимые сборки откуда угодно.Если ваше приложение знает, что зависимые сборки могут быть расположены в другом каталоге, оно может обработать это событие (что автоматически подразумевает, что они не были найдены в каталоге applciation, так как .Net Framework просматривает их в первую очередь), и попытаться загрузить сборку из этого каталога.альтернативное местоположение.

Подробнее см. Разрешение сборочных сборок .

Обновление: В этом случае я считаю, что вместо этого вы можете добавить данный каталогв AppDomainSetup.PrivateBinPath свойство для желаемого домена приложения.Это будет работать только в том случае, если указанные каталоги являются подкаталогами базового каталога приложения.Если это не так, то для использования этого подхода вам потребуется создать новый домен приложений с подходящим базовым каталогом приложения.

Также см. Рекомендации по загрузке сборки

...