【问题标题】:ExtensionManager null in Visual Studio 2017Visual Studio 2017 中的 ExtensionManager 为空
【发布时间】:2017-10-14 11:57:16
【问题描述】:

在以前版本的 Visual Studio 中,我可以使用以下代码来检索有关某个已安装扩展 (vsix) 的信息:

IVsExtensionManager manager = ServiceProvider.GlobalProvider.GetService(typeof(SVsExtensionManager)) as IVsExtensionManager;
if (manager != null)
{
    VsExtension extension = new VsExtension();
    IInstalledExtension info = manager.GetInstalledExtension(cExtensionProductId);
}

在新的 Visual Studio 2017 版本中,“manager”变量始终为空。微软改变了检索信息的方式(他们不再使用系统注册表),但我找不到另一种检索信息的方式。

您知道我在哪里可以找到更多信息和/或提供新实施的示例吗?

提前谢谢你!

【问题讨论】:

    标签: c# visual-studio-2017 vsix envdte


    【解决方案1】:

    请检查对于 VS 2017,您使用的是 VS 2017 对扩展管理器的特定引用。它应该是 Microsoft.VisualStudio.ExtensionManager.dllMicrosoft.VisualStudio.ExtensionEngine.dll

    有关工作示例,请参阅https://vlasovstudio.com/visual-commander/commands.html#ExtensionsList

    【讨论】:

    • 使用示例代码会导致“System.InvalidCastException:'无法将'Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService'类型的对象转换为'Microsoft.VisualStudio.ExtensionManager.IVsExtensionManager'。 ' "
    • 同时添加 dll、ExtensionManager.dll 和 ExtensionEngine.dll 会导致以下错误:CS0433 类型 'IInstalledExtension' 存在于两个 'Microsoft.VisualStudio.ExtensionEngine, Version=15.0.0.0, Culture=中性,PublicKeyToken=b03f5f7f11d50a3a' 和 'Microsoft.VisualStudio.ExtensionManager,版本=11.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'
    • Microsoft.VisualStudio.ExtensionManager 也应该是 Version=15.0.0.0。
    • 感谢您提供的信息!我终于找到了 Microsoft.VisualStudio.ExtensionManager.dll v.15.0.0.0 的位置。
    • Microsoft.VisualStudio.ExtensionManager.dll 的位置:C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\
    【解决方案2】:

    ServiceProvider.GlobalProvider.GetService(typeof(SVsExtensionManager)) 是否返回 null ?或“作为 IVsExtensionManager”变为空?

    【讨论】:

    • 'as IVsExtensionManager' 返回 null。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多