如何从命令行更新项目中的单个nuget包?

Nex*_*ine 10 command-line tfsbuild nuget

我正在尝试使用多个依赖项更新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>
Run Code Online (Sandbox Code Playgroud)

我想更新PackageA而不更新其他的.我看到Visual Studio包管理器中的Update-Package具有此功能,但这需要在TFS构建计算机上运行.

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

  1. Nuget.exe还原
  2. Nuget.exe更新(在每个csproj文件上)

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

Nex*_*ine 19

nuget.exe update有一个-Id指定项目的参数.所以,例如,

nuget.exe update X.csproj -Id PackageA
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的答案。我还发现(取决于您的设置)您可以简单地引用 .sln 文件,该文件反过来在解决方案中的所有相关 .csproj 文件中进行更新,即;`nuget 更新 X.sln -Id PackageA`。我还发现`-FileConflictAction OverWrite`(或忽略)非常方便。 (3认同)