You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visual Studio 2019中使用Nuget.VisualStudio.IVsPackageInstaller?

在NuGet.VisualStudio 5.11.3中获取IVsPackageInstaller实例的解决方案

核心思路

在IWizard实现中,需通过Visual Studio的服务容器获取IVsPackageInstaller,关键是利用DTE实例转换为IServiceProvider,再调用GetService获取目标服务实例。

步骤与代码实现

  1. 保存DTE实例:在RunStarted方法中接收并保存DTE2对象,供后续使用
private DTE2 _dte;

public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
{
    _dte = automationObject as DTE2;
}
  1. 在RunFinished中获取IVsPackageInstaller:通过DTE实例转换为服务提供者,再获取目标服务
public void RunFinished()
{
    if (_dte == null) return;

    // 转换为Visual Studio服务提供者
    var oleServiceProvider = _dte as Microsoft.VisualStudio.OLE.Interop.IServiceProvider;
    var serviceProvider = new Microsoft.VisualStudio.Shell.ServiceProvider(oleServiceProvider);

    // 获取IVsPackageInstaller实例
    var packageInstaller = serviceProvider.GetService(typeof(NuGet.VisualStudio.IVsPackageInstaller)) as NuGet.VisualStudio.IVsPackageInstaller;

    if (packageInstaller != null)
    {
        // 示例:安装指定NuGet包到目标项目
        var targetProject = _dte.Solution.Projects.Cast<Project>().FirstOrDefault(p => p.Kind == VSLangProj.PrjKind.prjKindCSharpProject);
        if (targetProject != null)
        {
            packageInstaller.InstallPackage(
                source: null, // 使用默认NuGet源
                project: targetProject,
                packageId: "Newtonsoft.Json",
                version: "13.0.3", // 指定版本,传null则安装最新稳定版
                ignoreDependencies: false);
        }
    }
}

必要依赖与注意事项

  • 需引用以下程序集:
    • NuGet.VisualStudio(5.11.3)
    • Microsoft.VisualStudio.Shell.15.0(VS2019对应版本)
    • EnvDTE80、VSLangProj、Microsoft.VisualStudio.OLE.Interop
  • 项目定位需根据实际模板场景调整,示例中通过项目类型筛选C#项目,可结合模板替换参数精准定位目标项目
  • 若自定义NuGet源,可将source参数设置为源地址(如"https://api.nuget.org/v3/index.json")

内容的提问来源于stack exchange,提问作者JaedenRuiner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:30:55