текущий EnvDTE или IServiceProvider, когда НЕ кодирую надстройку

Я пишу код времени разработки. Я хочу использовать этот фрагмент: (Найдено здесь)

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

Проблема в том, что это не компилируется. (GetService не является вызов известного метода) я попытался добавить Microsoft.VisualStudio.Shell (и Microsoft.VisualStudio.Shell.10.0) но это не помогло.

Покопавшись в Интернете, я обнаружил, что для этого нужен IServiceProvider.

Но все примеры, показывающие, как получить IServiceProvider, используют EnvDTE.

Итак, чтобы получить текущий EnvDTE, мне нужен IServiceProvider. Но чтобы получить IServiceProvider, мне нужен EnvDTE. (В моем ведре есть дыра...)

Итак, вот мой вопрос:

В обычном приложении WPF, как я могу получить текущий экземплярEnvDTE?

ПРИМЕЧАНИЕ. Я не ищу старые экземпляры EnvDTE. Мне нужен один для моего текущего экземпляра Visual Studio (я запускаю 3-4 экземпляра Visual Studio одновременно.)

11
задан Vaccano 2 June 2012 в 17:48
поделиться