Инструмент для отображения зависимостей сборки - PullRequest
8 голосов
/ 13 февраля 2012

Я начал работу над новым проектом с множеством сборок в одном решении.Я еще не знаком с зависимостями сборки и с трудом выясняю, какая сборка зависит от другой.

Знаете ли вы какие-либо инструменты, которые способны отображать список зависимостей или лучше его визуальный график?

Любая помощь приветствуется!

Ответы [ 2 ]

15 голосов
/ 13 февраля 2012

Вот несколько быстрых кодов, чтобы показать регистр Сесил Библиотека , чтобы сделать это:

public static void PoC(IEnumerable<AssemblyDefinition> assemblies, TextWriter writer)
{
    Console.WriteLine("digraph Dependencies {");
    var loaded = assemblies
        .SelectMany(a => a.Modules.Cast<ModuleDefinition>())
        .SelectMany(m => m.AssemblyReferences.Cast<AssemblyNameReference>().Select(a => a.Name + ".dll"))
        .Distinct()
        .Select(dllname => {
               try { return AssemblyFactory.GetAssembly(dllname); }
               catch { return null; } })
        .Where(assembly => assembly != null)
        .ToList();

    loaded.ForEach(a => a.MainModule.FullLoad());

    loaded.ForEach(a =>
        {
            foreach (var r in a.MainModule.AssemblyReferences.Cast<AssemblyNameReference>())
                Console.WriteLine(@"""{0}"" -> ""{1}"";", r.Name, a.Name.Name);
        } );

    Console.WriteLine("}");
}

Генерирует dot файл графика . Выполнение этого в довольно простом проекте приводит к:

enter image description here

Запуск его в чуть менее простом проекте вернул это:

enter image description here

Может быть целесообразно отфильтровать определенные сборки (.StartsWith("System.")?) И / или ограничить глубину поиска и т. Д.

5 голосов
/ 13 февраля 2012

NDepend - король, когда дело доходит до анализа графа зависимостей. Инструмент предлагает:

См. Все подробности в этом ответе Stackoverflow относительно соответствующего вопроса.

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