簡體   English   中英

NuGet:通過PowerShell或CMD將軟件包更新到所有項目中的特定版本

[英]NuGet: Update a package to a specific version in all projects via PowerShell or CMD

我們有一個場景,不同的團隊在更大的產品的不同部分工作。 有時,所有解決方案的所有Visual Studio項目都需要更新一些引用的NuGet包。 作為該更新的結果,整個源樹中的所有項目都應該引用相同版本的包。

有沒有辦法使用像PowerShell腳本這樣的自動方法將特定的NuGet包更新到所有項目中的特定版本?

編輯:有沒有辦法以某種方式加載Visual Studio和NuGet的必要部分,以正確更新程序集引用

例:

NuGetScript Update Solution.sln PackageName -version NewVersion

要么

NuGetScript Update PathToProjects PackageName -version NewVersion

在Visual Studio中加載所有組件的組件太多,並通過包管理器UI手動更新它們。

請在Package Manager控制台窗口中使用以下命令行在一個解決方案中更新特定包。

Get-Project -All | Update-Package PackageName -Version newVersion

您可以創建PowerShell腳本來搜索解決方案中的所有項目文件或packages.config文件,然后調用nuget update命令來更新軟件包。

但是,在Visual Studio之外的更新包時存在限制,我建議您從Visual Studio執行此操作:

update命令將下載所有新包並將其解壓縮到packages文件夾中。 程序集引用將在項目文件中更新,但這僅限於現有引用。 如果新包具有添加的程序集,則不會將其添加為更新命令的一部分。 新的包依賴項也不會添加其程序集引用。 要執行完整更新,請使用Visual Studio。

在其他地方找到了以下腳本。 我已經嘗試過我的項目了。 我沒有原始鏈接

以下腳本可以:

  1. 對文件夾中找到的任何解決方案運行restore命令
  2. 查找包含提供的包ID名稱的所有packages.config文件
  3. 使用packages.config文件和包名稱作為參數運行update命令

這假設nuget.exe存在於您將從中運行此文件夾的文件夾中

param(
    [Parameter(Mandatory=$true)]
    [string]$packageId
)

Get-ChildItem *.sln -recurse | %{.\\nuget.exe restore $_.fullname}

Get-ChildItem packages.config -Recurse `
  | Where-Object {$_ | Select-String -Pattern $packageId} `
  | %{.\\nuget.exe update -Id $packageId $_.FullName}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM