Abrufen des aktuellen EnvDTE- oder IServiceProviders, wenn KEIN Add-In codiert wird

Ich programmiere einen Design-Zeitcode. Ich möchte dieses Snippet verwenden: (GefundenHier)

var dte = (EnvDTE.DTE) GetService(typeof(EnvDTE.DTE));
if (dte != null)
{
    var solution = dte.Solution;
    if (solution != null)
    {
        string baseDir = Path.GetDirectoryName(solution.FullName);
    }
}

Problem ist, dass dies nicht kompiliert. (GetService ist kein bekannter Methodenaufruf) Ich habe versucht, Microsoft.VisualStudio.Shell (und Microsoft.VisualStudio.Shell.10.0) hinzuzufügen, aber es hat nicht geholfen.

Beim Stöbern im Internet habe ich festgestellt, dass Sie einen IServiceProvider benötigen, um dies aufzurufen.

Alle Beispiele, die zeigen, wie ein IServiceProvider abgerufen werden kann, verwenden jedoch ein EnvDTE.

Also, um die aktuelle EnvDTE zu bekommen, brauche ich IServiceProvider. Aber um einen IServiceProvider zu bekommen, brauche ich ein EnvDTE. (Da ist ein Loch in meinem Eimer ...)

Also, hier ist meine Frage:

Wie kann ich in einer normalen WPF-Anwendung dieaktuelle Instanz von EnvDTE?

HINWEIS: Ich suche keine alte Instanz von EnvDTE. Ich benötige die für meine aktuelle Visual Studio-Instanz (ich führe jeweils 3-4 Instanzen von Visual Studio aus.)

Antworten auf die Frage(5)

Ihre Antwort auf die Frage