Следующее - то, как Вы получили бы текущий каталог решения от дополнения:
_applicationObject = (DTE2)application; // retrieved from OnConnection method
string solutionDir = System.IO.Path.GetDirectoryName(_applicationObject.Solution.FullName);
Как Вы сделали бы это через VSPackage?
Я перемещаю дополнение Visual Studio в VSPackage, поскольку я намереваюсь добавить некоторые пользовательские элементы управления, которые требуют глубокой интеграции с IDE.
Я нашел некоторые хорошие ссылки на относительных достоинствах дополнений по сравнению с пакетами интеграции, такими как: http://nayyeri.net/visual-studio-addin-vs-integration-package-part-1
И некоторые хорошие учебные руководства на MSDN на VSPackages, такие как: http://msdn.microsoft.com/en-us/library/cc138589.aspx
Я еще не нашел хорошую ссылку (на MSDN или иначе) о том, как высокоуровневые интерфейсы в дополнениях (таких как DTE) отображаются для понижения интерфейсов уровня в VSPackages.
Какие-либо хорошие ссылки там для помощи с общим отображением от дополнения взаимодействуют через интерфейс к интерфейсам VSPackage?
Я нашел ответ на конкретный вопрос. Объект VisualStudio.DTE можно получить через метод GetService()
следующим образом:
// Get an instance of the currently running Visual Studio IDE
DTE dte = (DTE)GetService(typeof(DTE));
string solutionDir = System.IO.Path.GetDirectoryName(dte.Solution.FullName);