Получение списка сборок, необходимых приложению

Есть ли способ получить все необходимые сборки (за исключением .net framework) для проекта .net в папку, готовую для упаковки в nsis в качестве установочного файла?

Я попытался написать небольшое консольное приложение, которое использует отражение для получения списка dll, но застрял в поиске надежного способа определить, является ли dll из .net framework или нет.

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


person Dave Arkell    schedule 09.09.2008    source источник
comment
С точки зрения надежного способа определения того, принадлежит ли dll .net framework или нет, лучшее, что я могу сделать, — это использовать свойство Codebase объекта Assembly, которое для mscorlib равно C:\WINDOWS\Microsoft.NET\Framework. , однако это не для всех сборок .net framework.   -  person Dave Arkell    schedule 09.09.2008
comment
Вы должны быть осторожны с этим, в зависимости от того, для чего предназначен ваш установщик NSIS. Вы можете обнаружить, что случайно включили в программу установки DLL, на распространение которой у вас нет лицензии.   -  person Free Wildebeest    schedule 15.09.2008


Ответы (3)


В Visual Studio (по крайней мере, 2005 года — то, что я использую прямо сейчас) каждая ссылка, которую вы связали с проектом, имеет свойство «Копировать локально», для которого можно установить значение true/false. Когда это правда, он скопирует dll для вас в текущий каталог конфигурации.

person DAC    schedule 09.09.2008

Для этого можно использовать NDepend. Загрузите его, создайте новый проект NDepend, перетащите свои сборки в представление сетки данных Application Assemblies, и вы увидите, как NDepend мгновенно разрешает многоуровневые сборки, необходимые для вашего набора Application Assembles.

Вы также можете предоставить список папок, чтобы сообщить NDepend, где искать. Если сборка уровня не может быть найдена, то NDepend пометит ее как не найденную, что я считаю ценной информацией.

person Patrick from NDepend team    schedule 21.11.2008

Dependency Walker — это то, что вам нужно. Или, может быть, Depends.Net

person aku    schedule 09.09.2008
comment
Dependency Walker не разрешает ссылки на сборки (см. dependencywalker.com/faq.html) - person Christian.K; 21.11.2008