Certains outils effectuent des mises à jour sur les solutions .NET, mais ils doivent connaître le répertoire dans lequel se trouve la solution.Récupération par programme du répertoire de la solution IDE Visual Studio en cours à partir des add-ons
J'ai ajouté ces outils en tant qu'outils externes, où ils apparaissent dans le menu Outils IDE, et en fournissant $(SolutionDir)
comme argument. Cela fonctionne bien. Cependant, je souhaite que ces outils soient plus facilement accessibles dans l'EDI pour l'utilisateur via un menu de niveau supérieur personnalisé (pour lequel j'ai créé un projet de package d'intégration Visual Studio) et un menu contextuel sur les nœuds de solution (pour lesquels J'ai créé un projet complémentaire Visual Studio). Je suis à la recherche d'un moyen d'obtenir le répertoire de solution actuel à travers ces contextes.
J'ai essayé d'obtenir les informations de la solution de l'objet VisualStudio.DTE
:
EnvDTE.DTE dte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE");
string solutionDir = System.IO.Path.GetDirectoryName(dte.Solution.FullName);
Mais, cela renvoie le répertoire de solution pour les ins add, pas la solution actuelle.
J'ai essayé écho $(SolutionDir)
et en les lisant:
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "echo $(SolutionDir)");
// The following commands are needed to redirect the standard output.
// This means that it will be redirected to the Process.StandardOutput StreamReader.
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
// Do not create the black window.
procStartInfo.CreateNoWindow = true;
// Now we create a process, assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
// Get the output into a string
string result = proc.StandardOutput.ReadToEnd();
Mais, ce retour dans le répertoire de l'IDE, pas la solution actuelle.
Je n'ai vu aucune information pertinente dans le nœud de solution CommandBar
.
Sinon, s'il existait un moyen d'accéder par programme aux outils externes Visual Studio définis et de les lancer (en utilisant les arguments de macro déjà définis), cela fonctionnerait.
Quelle est la solution?
2+ nouveau apparemment je suis ici avec vous stalking cette folie DTE lol – Terrance