C# 如何正确获取VisualStudio2008的TypeFromProgID

C# 如何正确获取VisualStudio2008的TypeFromProgID,c#,.net,visual-studio-2008,interop,envdte,C#,.net,Visual Studio 2008,Interop,Envdte,我按照这里的指示: 对于.net 3.5 visual studio 2008,要解决此问题,请执行以下操作: 对于这一行代码: t = System.Type.GetTypeFromProgID("VisualStudio.DTE.8.0", true); 我得到这个错误: 未处理COMException:无效的类字符串(来自的异常) HRESULT:0x800401F3(CO_E_类字符串)) 有人知道这意味着什么吗?我做错了什么 非常感谢您的指导。您的代码

我按照这里的指示:

对于.net 3.5 visual studio 2008,要解决此问题,请执行以下操作:

对于这一行代码:

t = System.Type.GetTypeFromProgID("VisualStudio.DTE.8.0",
              true);
我得到这个错误:

未处理COMException:无效的类字符串(来自的异常) HRESULT:0x800401F3(CO_E_类字符串))

有人知道这意味着什么吗?我做错了什么


非常感谢您的指导。

您的代码与您使用的标记不匹配。VS2008是Visual Studio 9.0版。因此,正确的程序ID是
VisualStudio.DTE.9.0
。版本号的完整列表:

  • VS2002:7.0
  • VS2003:7.1
  • VS2005:8.0
  • VS2008:9.0
  • VS2010:10.0
  • VS2012:11.0
  • VS2013:12.0

您还可以使用
VisualStudio.DTE
progid。您将获得上次安装的VS的任何版本。有点随机。

您的代码与您使用的标记不匹配。VS2008是Visual Studio 9.0版。因此,正确的程序ID是
VisualStudio.DTE.9.0
。版本号的完整列表:

  • VS2002:7.0
  • VS2003:7.1
  • VS2005:8.0
  • VS2008:9.0
  • VS2010:10.0
  • VS2012:11.0
  • VS2013:12.0

您还可以使用
VisualStudio.DTE
progid。您将获得上次安装的VS的任何版本。有点随意。

谢谢hans,所以我应该参考visual studio开发环境9.0?不,您应该使用“VisualStudio.DTE.9.0”,非常感谢!我的意思是,当我引用com对象时,应该是“visual studio开发环境9.0”?仅使用VisualStudio.DTE是行不通的。我刚下载了VS2008Express,9.0不起作用!唉,当然不是。Express是免费的VS版本,它不支持插件和可扩展性接口。谢谢你,hans,所以我应该参考visual studio开发环境9.0?不,你应该使用“VisualStudio.DTE.9.0”,非常感谢!我的意思是,当我引用com对象时,应该是“visual studio开发环境9.0”?仅使用VisualStudio.DTE是行不通的。我刚下载了VS2008Express,9.0不起作用!唉,当然不是。Express是免费的VS版本,它不支持插件和可扩展性接口。