2016-01-28 66 views

回答

3

這是否幫助:

System.IServiceProvider serviceProvider = package as System.IServiceProvider; 
    Microsoft.VisualStudio.ExtensionManager.IVsExtensionManager em = 
     (Microsoft.VisualStudio.ExtensionManager.IVsExtensionManager)serviceProvider.GetService(
      typeof(Microsoft.VisualStudio.ExtensionManager.SVsExtensionManager)); 

    string result = ""; 
    foreach(Microsoft.VisualStudio.ExtensionManager.IInstalledExtension i in em.GetInstalledExtensions()) 
    { 
     Microsoft.VisualStudio.ExtensionManager.IExtensionHeader h = i.Header; 
     if (!h.SystemComponent) 
      result += h.Name + " (by " + h.Author + ") v" + h.Version + " " + h.MoreInfoUrl + System.Environment.NewLine; 
    } 

https://vlasovstudio.com/visual-commander/commands.html#20複製。

+1

喲dat作品... – Matthias

2

另一種可能性,如果你不想DTE,因爲你不是從Visual Studio內運行或擔心性能,你可以查詢從文件系統/註冊表中的擴展:

對於用戶分機 %LOCALAPPDATA%\微軟\ VisualStudio的* .vsix

對於一般擴展 \ Common7 \ IDE \擴展* .vsix

,如果你想成爲100%正確的,你可以看一下路徑在 \ Common7 \ IDE \ devenv.pkgdef

注:有可能在PkgDefSearchPath其他路徑。

要請檢查是否用戶擴展啓用與否,你必須查詢註冊表: HKEY_CURRENT_USER \ SOFTWARE \微軟\ VisualStudio的\ 10.0 \ ExtensionManager \ EnabledExtensions

有適用其他一些規則,你可以在微軟的這個博客中找到: http://blogs.msdn.com/b/visualstudio/archive/2010/02/19/how-vsix-extensions-are-discovered-and-loaded-in-vs-2010.aspx

+0

謝謝。很好的選擇。我的問題不夠詳細,但我還需要知道是否啓用了擴展......仍然投票= = – Matthias

+0

我認爲'\ Common7 \ IDE \ devenv.pkgdef'應該是'\ Common7 \ IDE \ master .pkgdef',至少在Visual Studio 2017上。這也表明你需要'CommonExtensions'文件夾,它包含了VS 2017中大多數微軟公共擴展(如語言服務)。 – Abel