Получите зависимости DLL или EXE, используя NDepend

Мне нужно получить список ссылочных сборок, используемых в файле EXE или DLL. Я искал NDepend как вариант, чтобы сделать это через консоль, чтобы у меня было программное решение для этого.

Насколько я знаю, NDepend читает зависимости из проекта Visual Studio, но я не знаю, можно ли сказать NDepend анализировать DLL и читать ее сборки, на которые есть ссылки.

Кто-нибудь знает, возможно ли это сделать с помощью NDepend? Если нет, есть другой инструмент или механизм, который я могу использовать для достижения этой цели?

Спасибо, дайте мне знать, если вам нужны дополнительные детали.

2 ответа

Решение

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

так что у меня может быть программное решение для этого.

Чтобы получить зависимости сборок программно, вам нужно использовать NDepend.API. Вот документация по началу работы с NDepend.API. Как только вы получили объект ICodeBase в памяти, вот, как получить зависимости сборок через запрос C# LINQ, например:

from a in codeBase.Application.Assemblies 
where a.AssembliesUsed.Count() >= 0 
orderby a.AssembliesUsed.Count() descending 
select new { 
   a,
   a.AssembliesUsed,
   a.AssembliesUsingMe
}

Заметить, что a.AssembliesUsed является IEnumerable < IAssembly >, который содержит приложения и сторонние сборки. К сдержанности a.AssembliesUsed только используемые сборки приложения, вы можете переписать его assembliesUsed = a.AssembliesUsed.Where(a1 => !a1.IsThirdParty),

Кроме того, поскольку NDepend API можно использовать из запроса C# LINQ, скомпилированного и выполненного на лету, вы можете запустить предыдущий запрос C# LINQ в редакторе запросов NDepend в Visual Studio и получить отформатированные зависимости сборок удобным способом:

Собирает зависимости с помощью NDepend

Другие вопросы по тегам