Я кодирую некоторый код времени разработки. Я хочу использовать этот фрагмент: (Найдено здесь)
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 за раз.)