Получить сборку требуемых сборок? - PullRequest
2 голосов
/ 02 февраля 2011

Я загружаю сборку X.dll в моей программе, где X.dll может быть чем угодно, и я создаю экземпляр класса X.A_Class. Но что, если для сборки X требуются сборки A, B, C и D?
Как я могу это обнаружить?
Как мне загрузить их, не держа их в переменной?

Ответы [ 3 ]

4 голосов
/ 02 февраля 2011

Вы можете использовать Assembly.GetReferencedAssemblies , как упомянуто @alexn, а затем использовать Assembly.Load для их загрузки.Кроме того, вы можете перехватить AppDomain.CurrentDomain.AssemblyResolve и загрузить их по требованию.

Если вам нужно выполнить их итерацию, убедитесь, что вы делаете это рекурсивно для получения транзитивных зависимостей.

2 голосов
/ 02 февраля 2011

Ссылочные сборки для сборки можно получить с помощью метода Assembly.GetReferencedAssemblies .

0 голосов
/ 03 февраля 2011

Ссылочные сборки обычно загружаются автоматически (см. Связанные сообщения, такие как Как сборка разрешается в .NET? для начальных ссылок).

Если вы загружаете сборки не из стандартных расположений (таких как GAC и корневая папка приложения), вам может потребоваться любой путь установки для загрузки ссылочных сборок из (найдите «путь загрузки сборки по умолчанию» - то есть файл конфигурации приложения - http://msdn.microsoft.com/en-us/library/823z9h8w.aspx) или загрузите их самостоятельно из события AssemblyReslove, как упомянуто в других ответах.

Лучший способ начать отладку проблем с загрузкой сборок - это читать блоги по адресу: http://blogs.msdn.com/b/suzcook/archive/2003/05/29/57120.aspx (и связанные сообщенияhttp://blogs.msdn.com/b/suzcook/archive/tags/loader+debugging+advice/)

РЕДАКТИРОВАТЬ: папка -> «корневая папка» + ссылка на тему файла конфигурации для поиска путей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...