Получить каталог проекта по умолчанию в расширении Visual Studio 2010

Как получить каталог создания проекта по умолчанию из расширения Visual Studio 2010? По умолчанию это каталог:

C:\Users\<username>\Documents\Visual Studio 2010\Projects

Я предполагаю, что это делается через окно «Инструменты-> Параметры», но я не знаю, как это сделать через SDK.

На первый взгляд следующее выглядит так, как будто это должно меня приблизить:

DTE2 dte = CType(GetService(typeof(SDTE)), DTE2);
Object props = dte.Properties("Projects and Solutions", "General");

Но я получаю следующую ошибку:

System.Runtime.InteropServices.COMException was unhandled by user code
ErrorCode=-2147352565
Message=Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

person Matt Ruwe    schedule 08.07.2012    source источник
comment
Если вы не можете найти способ получить его через интерфейсы DTE, возможно, вы можете получить его из раздела реестра, который поддерживает следующие настройки: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0, DefaultNewProjectLocation.   -  person Roman R.    schedule 09.07.2012
comment
@РоманР. Спасибо, надеюсь, кто-нибудь сможет сказать мне, какой индекс мне следует использовать, поскольку проекты и решения не работают, но если нет, это хорошая альтернатива.   -  person Matt Ruwe    schedule 09.07.2012


Ответы (1)


Нашел:
http://msdn.microsoft.com/en-us/library/ms165642.aspx

После однократного запуска Visual Studio имена элементов свойств для текущего экземпляра Visual Studio сохраняются в следующем разделе реестра Windows: HKCU\SOFTWARE\Microsoft\VisualStudio\10.0_Config\AutomationProperties. Это место всегда имеет окончательный список имен. Имена категорий — это имена подразделов ключа AutomationProperties (Инструменты базы данных, FontsAndColors и т. д.). Имена страниц — это имена подразделов ключей категорий. Например, категория FontsAndColors содержит страницы Dialogs и Tool Windows, Printer и TextEditor. Вы можете просмотреть реестр с помощью редактора реестра.

И вот код для получения значений, которые я ищу:

string defaultProjectPath = (string)(DTE.Properties("Environment", "ProjectsAndSolution").Item["ProjectsLocation"].Value);

Обратите внимание, что значения в реестре не совпадают с тем, что вы видите в Visual Studio, поэтому требуется небольшая детективная работа, чтобы получить точное значение, которое вы ищете. Я предполагаю, что он настроен таким образом из-за обратной совместимости.

person Matt Ruwe    schedule 10.07.2012
comment
Я не смог запустить этот фрагмент, даже после добавления ссылки на envdte и пространства имен EnvDTE. Я делаю что-то неправильно? Кроме того, если DTE.Properties вместо этого должен быть DTEVarName, как именно вы его построили? Я попробовал DTE myDTE = new DTE(); но это не избавило эту строку кода от жалоб. Пожалуйста, имейте в виду, я мало знаю о DTE... Я просто ищу способ программно получить каталог проекта VS2013 по умолчанию - person kayleeFrye_onDeck; 13.02.2015
comment
Поскольку это было почти два года назад, боюсь, я не помню деталей, а код где-то зарыт. Это также код для VS 2010, поэтому VS 2013 может отличаться. Вероятно, стоило бы задать новый вопрос и сослаться на этот, хотя изначально мне не повезло получить ответ... Может быть, вам повезет больше. - person Matt Ruwe; 13.02.2015