2017-10-14 159 views
1

在Visual Studio中,我可以使用下面的代码来获取关于某个已安装的扩展信息(VSIX)以前的版本:ExtensionManager空在Visual Studio 2017年

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'变量始终为空。微软改变了检索信息的方式(他们不再使用系统注册表),但我找不到另一种方式来检索信息。

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

预先感谢您!

回答

1

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

对于工作示例见https://vlasovstudio.com/visual-commander/commands.html#ExtensionsList

+0

在“System.InvalidCastException:”中使用示例结果的代码无法投射“Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService”类型的对象以键入“Microsoft.VisualStudio.ExtensionManager.IVsExtensionManager”。 “ – Odrai

+0

添加这两个DLL,ExtensionManager.dll和ExtensionEngine.dll导致以下错误:CS0433 \t类型'IInstalledExtension'存在于'Microsoft.VisualStudio.ExtensionEngine,Version = 15.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”和 'Microsoft.VisualStudio.ExtensionManager,版本= 11.0.0.0,文化=中性公钥= b03f5f7f11d50a3a' – Odrai

+0

Microsoft.VisualStudio.ExtensionManager应该版本= 15.0.0.0为好。 –

0

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

+0

'as IVsExtensionManager'返回null。 – Odrai