Ich habe einige Tools, die Updates für .NET-Lösungen durchführen, aber sie müssen das Verzeichnis kennen, in dem sich die Lösung befindet.Programmgesteuertes Abrufen des aktuellen Visual Studio IDE-Lösungsverzeichnisses aus Addins
Ich habe diese Tools als externe Tools hinzugefügt, wo sie im IDE-Tools-Menü erscheinen und $(SolutionDir)
als Argument liefern. Das funktioniert gut.
Ich möchte jedoch, dass diese Tools in der IDE für den Benutzer über ein benutzerdefiniertes Top-Level-Menü (für das ich ein Visual Studio-Integrationspaket-Projekt erstellte) und über ein Kontextmenü auf Lösung Knoten (für die Ich habe ein Visual Studio-Add-In-Projekt erstellt). Ich suche nach einer Möglichkeit, das aktuelle Lösungsverzeichnis durch diese Kontexte zu bekommen.
Ich habe versucht, die Lösung Informationen aus dem VisualStudio.DTE
Objekt erhalten:
EnvDTE.DTE dte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE");
string solutionDir = System.IO.Path.GetDirectoryName(dte.Solution.FullName);
Aber dies gibt die Lösung Verzeichnis für die Add-In, nicht die aktuellen Lösung.
Ich versuchte Echo $(SolutionDir)
und lesen es zurück:
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();
Aber dies das Verzeichnis für die IDE zurückgegeben, nicht die aktuelle Lösung.
Ich habe keine relevanten Informationen in der Lösung Knoten CommandBar
.
Wenn es eine Möglichkeit gab, programmgesteuert auf die definierten externen Tools von Visual Studio zuzugreifen und diese zu starten (mit den bereits definierten Makroargumenten), würde das funktionieren.
Was ist die Lösung?
2+ wieder scheinbar ich Stalking Sie hier Mit diesem DTE Wahnsinn lol – Terrance