Ho alcuni strumenti che eseguono gli aggiornamenti sulle soluzioni .NET, ma hanno bisogno di conoscere la directory in cui si trova la soluzione.programmazione ottenere la directory di soluzione di IDE di Visual Studio corrente addins
Ho aggiunto questi strumenti come Strumenti esterni, dove vengono visualizzati nel menu Strumenti IDE e fornendo $(SolutionDir)
come argomento. Funziona bene
Tuttavia, desidero che questi strumenti siano più facili da accedere nell'IDE per l'utente tramite un menu personalizzato di livello superiore (per il quale ho creato un progetto di pacchetto di integrazione di Visual Studio) e un menu di scelta rapida sui nodi soluzione (per i quali Ho creato un progetto aggiuntivo di Visual Studio). Sto cercando un modo per ottenere la directory della soluzione corrente attraverso questi contesti.
ho cercato di ottenere le informazioni soluzione dall'oggetto VisualStudio.DTE
:
EnvDTE.DTE dte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE");
string solutionDir = System.IO.Path.GetDirectoryName(dte.Solution.FullName);
Ma, questo restituisce la directory di soluzione per i componenti aggiuntivi, non la soluzione attuale.
ho cercato eco $(SolutionDir)
e la lettura indietro:
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();
Ma, questo è tornato la directory per l'IDE, non è la soluzione attuale.
non ho visto tutte le informazioni pertinenti nel nodo soluzione CommandBar
.
In alternativa, se ci fosse un modo per accedere a livello di codice gli strumenti esterni di Visual Studio definiti e lanciarli (utilizzando gli argomenti di macro già definite), che avrebbe funzionato.
Qual è la soluzione?
2+ di nuovo a quanto pare ti sto inseguendo qui Con questo DTE follia lol – Terrance