Visual Studio 2017中的ExtensionManager为空

3
在之前的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'变量始终为null。微软更改了检索信息的方式(不再使用系统注册表),但我找不到其他检索信息的方法。
你知道在哪里可以找到更多信息或者提供新实现的示例吗?
谢谢您的帮助!
2个回答

2

使用示例代码会导致以下错误:"System.InvalidCastException: '无法将类型为'Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService'的对象强制转换为类型'Microsoft.VisualStudio.ExtensionManager.IVsExtensionManager'。'" - Odrai
添加ExtensionManager.dll和ExtensionEngine.dll两个dll文件会导致以下错误:CS0433类型“IInstalledExtension”存在于“Microsoft.VisualStudio.ExtensionEngine,Version=15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”和“Microsoft.VisualStudio.ExtensionManager,Version=11.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”中。 - Odrai
Microsoft.VisualStudio.ExtensionManager 应该也是 Version=15.0.0.0。 - Sergey Vlasov
谢谢提供信息!我终于找到了 Microsoft.VisualStudio.ExtensionManager.dll v.15.0.0.0 的位置。 - Odrai
2
Microsoft.VisualStudio.ExtensionManager.dll的位置:C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ - Odrai
显示剩余3条评论

0

ServiceProvider.GlobalProvider.GetService(typeof(SVsExtensionManager)) 返回 null 吗?还是 "as IVsExtensionManager" 变成了 null?


'as IVsExtensionManager' 返回 null。 - Odrai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接