GetReferencedAssemblies не возвращает все сборки - PullRequest
26 голосов
/ 08 августа 2010

У меня есть следующий код внутри формы, и я пытаюсь найти способ загрузить сборку проекта, на которую ссылается форма с именем DataObjects. Используя следующий код, я получаю только шесть сборок в списке. Глядя на ссылки на проект, в котором находится форма, есть тринадцать сборочных ссылок. Что здесь не так?

private void ListReferencedAssemblies()
{
    var assemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies();
    foreach (var assembly in assemblies)
    {
        referencesListBox.Items.Add(assembly.Name);
    }
} 

Ответы [ 2 ]

33 голосов
/ 08 августа 2010

Не могли бы вы проверить манифест сборки, чтобы увидеть, на что здесь ссылаются?

Компилятор C # имеет тенденцию удалять ссылочные сборки из манифеста, если они не используются.Поэтому, если вы не ссылаетесь на какой-либо тип из сборки B или ссылаетесь только на константы из сборки B (которые вставлены компилятором), у вас не будет этих ссылок.

7 голосов
/ 08 августа 2010

Компилятор не будет включать ссылки на сборки в выходную сборку, которые фактически не используются в коде.

В выходной сборке будут ссылаться только на сборки, которые используются из кода.

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