139 votes

Graphique de dépendances des projets Visual Studio

Je suis en train de migrer une grosse solution (~70 projets) de VS 2005 + .NET 2.0 à VS 2008 + .NET 3.5. Actuellement, j'ai VS 2008 + .NET 2.0.

Le problème est que je dois déplacer les projets un par un vers le nouveau cadre .NET en veillant à ce qu'aucun projet .NET 2.0 ne fasse référence à un projet .NET 3.5. Existe-t-il un outil qui me permettrait d'obtenir un beau graphique des dépendances des projets ?

184voto

Danny Tuppeny Points 9856

J'avais besoin de quelque chose de similaire, mais je ne voulais pas payer (ou installer) un outil pour le faire. I créé un rapide PowerShell script qui passe en revue les références du projet et les recrache dans un yuml.me friendly-format à la place :

Function Get-ProjectReferences ($rootFolder)
{
    $projectFiles = Get-ChildItem $rootFolder -Filter *.csproj -Recurse
    $ns = @{ defaultNamespace = "http://schemas.microsoft.com/developer/msbuild/2003" }

    $projectFiles | ForEach-Object {
        $projectFile = $_ | Select-Object -ExpandProperty FullName
        $projectName = $_ | Select-Object -ExpandProperty BaseName
        $projectXml = [xml](Get-Content $projectFile)

        $projectReferences = $projectXml | Select-Xml '//defaultNamespace:ProjectReference/defaultNamespace:Name' -Namespace $ns | Select-Object -ExpandProperty Node | Select-Object -ExpandProperty "#text"

        $projectReferences | ForEach-Object {
            "[" + $projectName + "] -> [" + $_ + "]"
        }
    }
}

Get-ProjectReferences "C:\Users\DanTup\Documents\MyProject" | Out-File "C:\Users\DanTup\Documents\MyProject\References.txt"

5 votes

Génial. Je l'ai pris et l'ai étendu pour passer par tous les sous-projets, puis je l'ai étendu à nouveau pour prendre un fichier sln à la place pour cartographier le projet entier. Merci

0 votes

Avec quelles versions de Visual Studio cela fonctionne-t-il ? De même, pour visualiser des projets C++ au lieu de C#, suffit-il de changer le suffixe du fichier .csproj en .vcproj ? Je travaille ici avec VS 2005 et j'obtiens un fichier de résultat vide...

1 votes

Il a été écrit dans le cadre d'un projet 2010 pour C#, mais vous pourriez probablement le modifier très facilement en regardant le XML dans un projet C++ et en ajustant le code :-)

85voto

Shkredov S. Points 319

Mise à jour : ReSharper depuis la version 8 a intégré Voir les dépendances du projet fonction.

ReSharper version < 8 a Fonctionnement interne pour afficher les graphiques de dépendance en utilisant la visionneuse yFiles. Voir le manuel rapide en bas de l'article.

enter image description here

Comment faire

  1. Installez l'outil yEd à partir de aquí .
  2. Lancez VS avec l'argument de ligne de commande /resharper.internal.
  3. Allez dans ReSharper/Internal/Show Dependencies.
  4. Spécifiez les projets que vous souhaitez inclure dans le "tableau général".
  5. Décochez la case "Exclure les nœuds du terminal...", sauf si vous en avez besoin.
  6. Appuyez sur "Show".
  7. Utiliser la disposition hiérarchique dans yEd (Alt+Shift+H)
  8. Donnez votre avis =)

2 votes

Resharper > Inspecter > Hiérarchie des projets permet également d'obtenir la liste des projets référencés sur le site actuel.

6 votes

Resharper > Architecture > "Afficher le diagramme des dépendances du projet".

0 votes

Pour une solution qui compte plus de 1700 projets, ReSharper continue de faire planter Visual Studio.

48voto

Avez-vous essayé NDepend ? Il vous montre les dépendances et vous pouvez également analyser l'utilisabilité de vos classes et méthodes.

Leur site web :

http://ndepend.com


Pour compléter la réponse de @Eriawan en avril 2020, la version 2020.1 de NDepend a été publiée avec Graphique de dépendance entièrement reconstruit. Il est désormais adapté aux grandes solutions composées de centaines de projets et offre de nombreuses facilités de navigation.

Voici à quoi cela ressemble sur le Projet OSS NopCommerce .

NDepend Dependency Graph on NopCommerce

Voici ce que cela donne pour l'ensemble de la bibliothèque de classes .NET Core 3 (176 assemblages).

enter link description here

Clause de non-responsabilité : je travaille chez NDepend

4 votes

L'affiche originale n'a pas dit que ndepend était gratuit et qu'il résolvait le problème.

6 votes

Elle était peut-être gratuite au moment de la rédaction de cette réponse, mais elle ne l'est plus.

1 votes

@patrick-from-ndepend-team s'il vous plaît ne modifiez pas directement ma réponse et ouvrez une nouvelle réponse à la place.

32voto

Chris Lovett Points 275

Vous pouvez obtenir un graphique des dépendances d'un projet facilement en utilisant Visual Studio 2010 Ultimate. Passez à 5 minutes de cette vidéo pour voir comment : http://www.lovettsoftware.com/blogengine.net/post/2010/05/27/Architecture-Explorer.aspx

Dans Visual Studio 2010 Ultimate : Architecture | Générer un graphique de dépendances | Par assemblage.

0 votes

@CJohnson Vous pouvez faire cela pour le code C et C++ si vous avez Visual Studio 2010 Feature Pack 2 . Voir aussi Comment : Générer des graphes de dépendances pour du code C et C++

1 votes

J'ai essayé, j'ai eu une exception. Apparemment, MS ne l'a jamais testé avec autre chose que quelques projets. Absolument sans valeur à mon avis.

1 votes

Non seulement ça, mais c'est aussi horriblement lent. Je lui donnerais -10 si je pouvais. J'ai écrit mon propre marcheur de dépendance de projet (pour notre propre système de construction) et il était rapide comme l'éclair par rapport à celui de Visual Studio.

21voto

devio Points 22981

J'ai écrit un outil qui pourrait vous aider. Visualiseur de dépendances de solutions VS analyse les dépendances des projets au sein d'une solution et crée un diagramme des dépendances à partir de ces informations, ainsi qu'un rapport textuel.

0 votes

Avec quelles versions de Visual Studio et quels types de projets cela fonctionne-t-il ? VS 2005 / C++ ici et l'outil ne semble rien faire...

0 votes

Il fonctionne sans aucun doute avec vs 2008/2010 et .csproj/.vbproj. Je n'ai pas testé avec vs2005, mais actuellement les fichiers .vcproj ne sont pas reconnus.

0 votes

Cet outil ne montre que le fichier de la solution après l'avoir analysé :-(. Pas mes quelque 300 projets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X