【问题标题】:How to get installed VisualStudio extensions programmatically?如何以编程方式安装 VisualStudio 扩展?
【发布时间】:2016-01-28 20:51:31
【问题描述】:

如何获取已安装的 VisualStudio 扩展的列表?不知何故通过DTE?只是名字就足够了。

【问题讨论】:

    标签: visual-studio envdte


    【解决方案1】:

    这有帮助吗:

    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。

    【讨论】:

    • 当它不使用 DTE 时,不知道这怎么可能是答案。
    • 为什么必须这样?
    • > 不知何故通过 DTE?
    • 那是一个问题而不是一个请求 ;-) 我想你误解了 :-)
    【解决方案2】:

    另一种可能性,如果您不想要 DTE,因为您不是在 Visual Studio 中运行或担心性能,您可以从文件系统/注册表中查询扩展:

    用于用户扩展 %LocalAppData%\Microsoft\VisualStudio*.vsix

    对于一般扩展 \Common7\IDE\Extensions*.vsix

    如果您想 100% 正确,您可以在 \Common7\IDE\devenv.pkgdef

    注意:PkgDefSearchPath 中可以有其他路径。

    要检查是否启用了用户扩展,您必须查询注册表: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\ExtensionManager\EnabledExtensions

    还有一些其他适用的规则,您可以在 Microsoft 的此博客中找到: http://blogs.msdn.com/b/visualstudio/archive/2010/02/19/how-vsix-extensions-are-discovered-and-loaded-in-vs-2010.aspx

    【讨论】:

    • 谢谢。不错的选择。我的问题不够详细,但我还需要知道扩展是否已启用...仍然投票=)
    • 我认为 \Common7\IDE\devenv.pkgdef 应该是 \Common7\IDE\master.pkgdef,至少在 Visual Studio 2017 上。这也表明您还需要 CommonExtensions 文件夹,其中包含大多数 Microsoft 的常用扩展(如语言服务) 在 VS 2017 中。
    猜你喜欢
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 2020-12-04
    • 2016-08-24
    相关资源
    最近更新 更多