Thursday, February 7, 2013

VS Project dependencies viewer. One that just works.

Как-то мне понадобилось изучить зависимости между проектами. Я попробовал различные инструменты для этого, но никто не справился нарисовать более или менее внятную картину для нашего случая. А случай довольно экзотический, сейчас в солюшене ReSharper более 300 проектов. Встроенная фича студии Ultimate показала мне следующее:
Пришлось придумывать что-то своё. В качестве программы для просмотра я выбрал yEd от yWorks, сгенерировал граф зависимостей между проектами в ее формате, но по-прежнему ничего понятно не было.
Пришлось применять некоторые улучшения:

  1. Убрать все транзитивные зависимости. Если были проекты A, B и C и зависимости (A->B, B->C и A->C), то A->C можно не показывать так как она сама по себе не так важна.
  2. Сделать в графе группировки (я использовал Solution Folders). Это что помогает yFiles лучше справиться со своей задачей. 
  3. Дать возможность выбрать проекты для которых построить зависимости. При этом учитывать транзитивные зависимости проходящие через невыбранные проекты.
  4. При наличии групп можно не показывать проекты от которых нет зависимостей вне группы. (Это опционало, конечно). 
Все это вместе позволило быстро соорудить поделку, позволяющую решать мои задачи по разруливанию зависимостей между проектами. И самое главное, если у Вас уже есть ReSharper 7, то можно попробовать то, что у меня получилось. Необходимо поставить yEd от yWorks, запустить студию с ключиком /resharper.internal и идти в меню ReSharper -> Internal -> Show Dependencies:
Затем, в окошке должны появиться проекты, сгруппированные по папкам. Эта группировка будет использована при построении графа. Выбираем проекты которые хочется показать. Внимание, есть галочка 'Exclude terminal nodes'.
Получается вполне читаемая картинка (чтобы ее получить необходимо нажать магический Alt+Shift+H - раскладка иерархическая):
Буду рад фидбэку =)

Manual:

  1. Install yEd tool from here
  2. Run VS with /resharper.internal command line argument.
  3. Go to ReSharper/Internal/Show Dependencies. 
  4. Specify projects that you want to include to the 'big picture'. 
  5. Uncheck 'Exclude terminal nodes...' unless you need it. 
  6. Press 'Show'. 
  7. Use hierarchical layout in yEd (Alt+Shift+H) 
  8. Provide feedback =)














2 comments:

  1. Wow! I have been looking for a tool like this for years! (I can't afford Visual Studio Ultimate, but do have ReSharper).

    ReplyDelete
  2. можливість позики, запропонована містером Бенджаміном, яка рятує мою сім’ю від фінансової неволі {247officedept@gmail.com} привіт усім! Бенджамін, коли нас вигнали з дому, коли я вже не міг оплачувати рахунки, після того, як мене обманули різні компанії в Інтернеті та відмовили у позиці у моєму банку та іншій кредитній спілці, яку я відвідав. моїх дітей взяли в прийомні сім'ї, я був на вулиці один. день, коли я ганебно зайшов до старого шкільного товариша, який познайомив мене з маргариткою Морін. спочатку я сказав їй, що більше не готовий ризикувати запитом позики в Інтернеті, але вона запевнила мене, що отримаю свою позику від них. задумавшись, через свою безпритульність мені довелося взяти судовий розгляд та подати заявку на позику, на щастя для мене, я отримав позику у розмірі 80 000,00 доларів від пана Бенджаміна. Я щасливий, що ризикнув і подав заявку на позику. мої діти були повернені мені, і тепер я маю дім і власний бізнес. вся подяка та подяка йде на допомогу містеру Бенджаміну за те, що він дав мені сенс життя, коли я втратив будь-яку надію. якщо ви зараз шукаєте допомоги в позиці, ви можете зв’язатися з ними за адресою: {247officedept@gmail.com whatsapp + 1-989-394-3740.

    ReplyDelete