获取Visual Studio 2010扩展中的默认项目目录

Mat*_*uwe 4 c# visual-studio-2010 visual-studio-sdk visual-studio-2010-sp1 visual-studio-extensions

如何从Visual Studio 2010扩展中获取默认项目创建目录?默认情况下,此目录为:

C:\Users\<username>\Documents\Visual Studio 2010\Projects
Run Code Online (Sandbox Code Playgroud)

我猜这是通过工具 - >选项窗口完成的,但我不知道如何通过SDK获得此功能.

乍一看,以下看起来应该让我接近:

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

但是我收到以下错误:

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

Mat*_*uwe 7

找到它:http:
//msdn.microsoft.com/en-us/library/ms165642.aspx

Visual Studio运行一次后,Visual Studio的当前实例的属性项名称存储在以下Windows注册表项中:HKCU\SOFTWARE\Microsoft\VisualStudio\10.0_Config\AutomationProperties.此位置始终具有明确的名称列表.类别名称是AutomationProperties键(Database Tools,FontsAndColors等)的子键的名称.页面名称是类别键的子键的名称.例如,FontsAndColors类别包含Dialogs和Tool Windows,Printer和TextEditor页面.您可以使用注册表编辑器查看注册表.

这里是获取我正在寻找的值的代码:

string defaultProjectPath = (string)(DTE.Properties("Environment", "ProjectsAndSolution").Item["ProjectsLocation"].Value);
Run Code Online (Sandbox Code Playgroud)

请注意,注册表中的值与您在Visual Studio中看到的值不匹配,因此需要一些小的侦探工作才能获得您正在寻找的确切值.由于向后兼容性,我认为它是以这种方式设置的.