如何使用 IVsPackageSourceProvider
我可以获得 NuGet 源列表,例如 https://www.nuget.org/api/v2/
?我尝试使用这样的结构:
using (Microsoft.VisualStudio.Shell.ServiceProvider provider = new Microsoft.VisualStudio.Shell.ServiceProvider((Microsoft.VisualStudio.OLE.Interop.IServiceProvider)base._dteObject))
{
IComponentModel service = (IComponentModel)provider.GetService(typeof(SComponentModel));
try
{
var sourceProvider = service.GetService<IVsPackageSourceProvider>();
}
catch(Exception ex)
{
}
}
但是 Try
block 引发了一个 Exception
文本:
Cannot cast the underlying exported value of type 'NuGet.VisualStudio.VsPackageSourceProvider (ContractName="NuGet.VisualStudio.IVsPackageSourceProvider")' to type 'NuGet.VisualStudio.IVsPackageSourceProvider'
请告诉我如何使用此提供程序。
对不起英语不好
最佳答案
您可以通过 IVsPackageInstallerServices 获取 NuGet 包列表,如下所示:
try
{
//Using the IComponentModel service
var componentModel = (IComponentModel)this.ServiceProvider.GetService(typeof(SComponentModel));
//var sourceProvider = componentModel.GetService<IVsPackageSourceProvider>();
IVsPackageInstallerServices installerServices =
componentModel.GetService<IVsPackageInstallerServices>();
var installedPackages = installerServices.GetInstalledPackages();
}
catch (Exception ex)
{
}
编辑:
关于c# - 如何使用 IVsPackageSourceProvider 提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41225508/