5 votes

Comment puis-je cartographier les Solutions Visual Studio qui utilisent quels Projets?

Je dispose d'un projet logiciel composé de plusieurs fichiers de projet et de plusieurs fichiers de solution. Les fichiers de solution ont une relation un-à-plusieurs avec les fichiers de projet, et un fichier de projet donné peut apparaître dans plusieurs fichiers de solution différents.

Existe-t-il un moyen efficace/un moyen élégant de créer une carte des relations entre les fichiers de solution et les fichiers de projet ? Soit à travers VS soit à l'aide d'un utilitaire quelconque.

Ce que j'aimerais faire, c'est dire "hé, dans ce répertoire et ses sous-répertoires, il y a plusieurs fichiers de solution et de projet - veuillez me dire quels solutions utilisent quels projets et me le cartographier"

Je réalise que l'effet final pourrait être obtenu en ouvrant chaque fichier de solution et en l'inspectant, mais je recherche une action automatisée et répétable.

MODIFICATION: J'ai également des combinaisons Solution/Projet remontant à VS2003, donc j'ai besoin de les cartographier également.

3voto

Jamie Penney Points 2821

En plus du message de Gordon Wilson, vous pourriez essayer de construire la même chose en C# et utiliser QuickGraph et GraphViz pour créer un diagramme montrant la même chose.

QuickGraph peut être utilisé pour créer la structure du graphe en mémoire et générer un fichier dot, que Graphviz peut charger pour créer un diagramme de belle apparence. Les documentations sur les deux sites devraient vous donner assez d'informations pour commencer.

** édition ** Voir ici pour un petit projet annexe que j'ai commencé et qui fait ce que vous voulez en partie. Vous pourriez probablement ajouter tout ce dont vous avez besoin en quelques heures au maximum. N'hésitez pas à le prendre et à l'utiliser comme bon vous semble, mais laissez-moi un commentaire si vous le faites s'il vous plaît.

1voto

Gordon Wilson Points 14721

Les fichiers de projet et les fichiers de solution sont des fichiers texte. Les fichiers de projet ne connaissent pas leur solution, donc nous devrons chercher dans les solutions pour trouver leurs projets.

Une entrée de projet dans le fichier de solution ressemble à ceci:

Project("{9AC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NomDuProjet", "RépertoireDuProjet\NomDuFichierDuProjet.vcproj","{9A95F635-B74F-4640-BBCF-E324D0972CA9}"
EndProject

Donc, vous pouvez voir, nous pouvons obtenir le nom du projet et le chemin relatif vers le fichier du projet.

En utilisant votre langage de script préféré, vous pourriez faire quelque chose comme ce qui suit. (Exemple en ruby)

require 'find'

def project_name(string)
  string =~ /= "(.+?)"/
  $1
end

# le script n'utilise pas cette méthode mais vous voudrez peut-être l'utiliser
def project_path(string)
  string =~ /, "(.+?)"/
  $1
end

def find_projects(path)
  puts "#{path} contient les projets suivants :"
  open(path).read.gsub(/Project\(.+?EndProject/m) do |match|
    puts project_name(match)
  end
  puts ""
end

#changez File.dirname(__FILE__)) par le nom du répertoire que vous souhaitez rechercher.
Find.find(File.dirname(__FILE__)) do |path|
  if FileTest.directory?(path)
    if File.basename(path) =~ /^\../ # Le nom du répertoire commence par .
      Find.prune       # Ne pas chercher plus loin dans ce répertoire.
    else
      next
    end
  elsif path =~ /\.sln$/
    find_projects(path)
  end
end

0voto

shoosh Points 34322

Un simple script python (perl?) avec quelques expressions régulières bien placées.
Chaque projet a son propre GUID. Trouver la correspondance consiste simplement à trouver les GUID des projets et à les chercher dans les fichiers de solution.

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