2014-07-01 43 views
1

我想创建使用Visual Studio实例:EnvDTE Visual Studio 2013:获取progID?

EnvDTE80.DTE2 dte2; 
dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.12.0"); 

而且我总是有例外“无效类字符串”所以我认为这个问题是“VisualStudio.DTE.12.0”。 但是我正在使用Visual Studio 2013 12.0.30501,我也试图只用“VisualStudio.DTE”来获取最新的版本,以及相同的异常。

而且,我试过其他方式:

Type t = Type.GetTypeFromProgID("VisualStudio.DTE.12.0", true); 
dte2 = (EnvDTE80.DTE2)System.Activator.CreateInstance(t, true); 

的问题仍然存在,我运行了一下出来的想法......难道真的是无效的字符串错误?

+0

不,那是正确的ProgID,如果你有VS2013。您的注册表必须被破坏,请使用Regedit.exe查看HKEY_CLASSES_ROOT \ VisualStudio.DTE.12.0。希望你找不到它。 –

+0

这是正确的,我无法找到注册表中的HKEY_CLASSES_ROOT \ VisualStudio.DTE.12.0。我应该如何“创造”它? – Geoffrey

+0

你的机器坏了。天知道还有什么消失了。随意恐慌。重新运行VS安装程序可能会起作用。 –

回答

1

如果您使用Visual Studio 2013和快递这个工程进行修复:

Type t = Type.GetTypeFromProgID("WDExpress.DTE.12.0", true); 
var x = (EnvDTE80.DTE2)System.Activator.CreateInstance(t, true);