Comment puis-je par programme la liste de tous les projets dans une solution?
Comment puis-je par programme la liste de tous les projets dans une solution? Je vais prendre un script en ligne de commande, ou les appels d'API.
Vous devez vous connecter pour publier un commentaire.
Voici un script PowerShell qui permet de récupérer les détails du projet à partir d'un .la sln fichier:
Select-String "{2150E333-8FDC-42A3-9474-1A3956D46DE8}" -NotMatch |
Edit: Modifié le regex afin d'y inclure ".*" comme par le commentaire par Kumar Vaibhav
Vous pouvez utiliser le EnvDTE.Solution.Les projets objet de programmation pour accéder aux projets dans une solution.
Une chasse aux sorcières, c'est que si vous avez des SolutionFolders dans votre solution, tous les projets dans ces dossiers ne sont pas représentés dans la collection ci-dessus.
J'ai écrit un article, notamment un exemple de code sur comment pour obtenir tous les projets indépendamment de toute solutionfolders
$dte
à partir du gestionnaire de paquets de la console. Si vous n'avez pas VS course à tous, alors vous avez besoin d'une solution alternative. La nouvelle MSBuild paquetages contiennent des classes pour l'analyse de la solution et des fichiers de projet, mais ces derniers sont toujours en pré-RTMActuellement, vous pouvez utiliser La Console Du Gestionnaire De Package dans VS pour obtenir cette info. Utiliser powershell
Get-Project
commandeversion
?Get-Project -All | Install-Package Nlog
😎il suffit de lire la liste à partir de *.la sln fichier. Il y a de "Projet"-"EndProject" des sections.
Voici un article de MSDN.
Si vous écrivez votre programme Visual Studio Add-in vous pouvez accéder à la
EnvDTE
pour découvrir tous les projets dans le cours d'ouverture de la solution.Il y a une solution élégante ici: L'analyse de solutions de Visual Studio fichiers
La réponse par John Leidegren consiste à envelopper les internes
Microsoft.Build.Construction.SolutionParser
classe.L'astuce est de choisir la bonne MsBuild.dll.
En vertu de VS2017 c'est en effet "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\amd64\Microsoft.Build.dll"
(Ne pas utiliser la norme Msbuild ddl dans les références. Parcourir ce chemin)
c#:
powershell:
Si vous avez besoin de le faire sur une machine Windows, vous pouvez utiliser la commande Bash suivante:
grep "Project(" NameOfYourSolution.sln | cut -d'"' -f4
Depuis Visual Studio 2013, le Microsoft.Build.dll fournit un SolutionFile objet avec quelques fonctions pratiques.
Voici un exemple d'utilisation de la v14.0 version de la liste le chemin relatif de tous les projets dans l'ordre où ils apparaissent dans la solution.
Il ya beaucoup d'autres propriétés sur l'objet du projet (ProjectName, Cheminabsolu, configurations, etc) que l'on peut utiliser. Dans l'exemple ci-dessus j'ai utilisé le ProjectType pour filtrer la Solution de Dossiers.
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\amd64\Microsoft.Build.dll"
Et ennuyeux, mais pour sqlprojs fichiers, type de projet est Inconnue[SolutionProjectType]::Unknown