2014-07-01 45 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);