如何在命令行中更新项目中的单个NuGet包?

12

我正在尝试在包含多个依赖项的 csproj 中更新单个包。也就是说,packages.config 文件看起来像这样:

<packages>
  <package id="PackageA" version="1.2.1" targetFramework="net40" />
  <package id="PackageB" version="2.3.4" targetFramework="net40" />
  <package id="PackageC" version="1.0.0" targetFramework="net40" />
</packages>

我想更新 PackageA 而不更新其他软件包。我发现在 Visual Studio 包管理器中的 Update-Package 可以做到这一点,但需要在 TFS 构建机上运行。

有没有办法从命令行执行此操作?预期的工作流程是构建机运行:

  1. Nuget.exe restore
  2. Nuget.exe update(在每个 csproj 文件上)

但是,update 命令不允许我们指定要更新的软件包。我知道软件包中有一个 allowedVersions 标签,但这将要求我们更改 packages.config 文件以创建需要更新或不更新不同组件的不同分支,而软件包特定的,csproj 特定的命令行将允许我们通过其构建定义将要更新的依赖关系与每个 TFS 分支相关联。

1个回答

24
nuget.exe update 命令有一个 -Id 参数,用于指定项目。例如,
nuget.exe update X.csproj -Id PackageA

4
这是一个很好的回答。我还发现(取决于您的设置),您可以简单地引用 .sln 文件,从而在解决方案中更新所有相关的 .csproj 文件,例如:nuget update X.sln -Id PackageA。我还发现 -FileConflictAction OverWrite(或 Ignore)非常方便。 - keithl8041

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