Получите зависимости DLL или EXE, используя NDepend
Мне нужно получить список ссылочных сборок, используемых в файле EXE или DLL. Я искал NDepend как вариант, чтобы сделать это через консоль, чтобы у меня было программное решение для этого.
Насколько я знаю, NDepend читает зависимости из проекта Visual Studio, но я не знаю, можно ли сказать NDepend анализировать DLL и читать ее сборки, на которые есть ссылки.
Кто-нибудь знает, возможно ли это сделать с помощью NDepend? Если нет, есть другой инструмент или механизм, который я могу использовать для достижения этой цели?
Спасибо, дайте мне знать, если вам нужны дополнительные детали.
2 ответа
- Используйте Reflection, чтобы сделать это программно для управляемых ссылок: http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getreferencedassemblies.aspx.
- Или используйте инструмент, такой как dotBeek JetBrain, также для управляемых ссылок
- Используйте Dependency Walker для других ссылок: http://www.dependencywalker.com/faq.html
Если вам нужен граф зависимостей, матрица зависимостей или если вы нуждаетесь в этих сборках зависимостей программно, 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 и получить отформатированные зависимости сборок удобным способом: