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

C# 获取Visual Studio 2010扩展中的默认项目目录,c#,visual-studio-2010,visual-studio-extensions,visual-studio-sdk,C#,Visual Studio 2010,Visual Studio Extensions,Visual Studio Sdk,如何从VisualStudio2010扩展中获取默认的项目创建目录?默认情况下,此目录为: C:\Users\<username>\Documents\Visual Studio 2010\Projects 但我得到了以下错误: System.Runtime.InteropServices.COMException was unhandled by user code ErrorCode=-2147352565 Message=Invalid index. (Exception f

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

C:\Users\<username>\Documents\Visual Studio 2010\Projects
但我得到了以下错误:

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

Visual Studio运行一次后,Visual Studio当前实例的属性项名称存储在以下Windows注册表项中:HKCU\SOFTWARE\Microsoft\VisualStudio\10.0\u Config\AutomationProperties。此位置始终具有最终的名称列表。类别名称是AutomationProperties键(数据库工具、FontSandColor等)的子键的名称。页面名称是 类别键的子键的名称。例如,“FontSandColor”类别包含对话框和工具窗口、打印机和文本编辑器页面。您可以使用 注册表编辑器

下面是获取我要查找的值的代码:

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

请注意,注册表中的值与您在VisualStudio中看到的值不匹配,因此需要进行一些检测工作才能获得您要查找的确切值。我认为是由于向后兼容,所以采用这种方式进行设置。

如果您找不到通过DTE接口获取它的方法,您可能可以从支持这些设置的注册表位置获取它:
HKEY\U CURRENT\u USER\Software\Microsoft\VisualStudio\10.0
DefaultNewProjectLocation
@RomanR。谢谢,希望有人能告诉我应该使用哪个索引,因为“项目和解决方案”似乎不起作用,但如果不起作用,这是一个很好的选择。即使在添加了envdte引用和envdte命名空间之后,我也无法运行此代码段。我做错什么了吗?另外,如果DTE.Properties应该是DTEVarName,那么您到底是如何构造它的?我试过DTE myDTE=new DTE();但这并不能解决这一行代码的抱怨问题。请记住,我对DTE了解不多。。。我只是在寻找一种以编程方式检索VS2013默认项目目录的方法,因为这几乎是两年前的事了,恐怕我记不起细节了,代码被隐藏在某处。这也是VS2010的代码,所以VS2013可能会有所不同。也许有必要问一个新问题并参考这个问题,尽管我最初没有多少运气得到答案。。。也许你会有更好的运气。
string defaultProjectPath = (string)(DTE.Properties("Environment", "ProjectsAndSolution").Item["ProjectsLocation"].Value);