![](/img/trans.png)
[英]Nuget powershell command - find projects with specific package installed
[英]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。
在其他地方找到了以下腳本。 我已經嘗試過我的項目了。 我沒有原始鏈接
以下腳本可以:
restore
命令 packages.config
文件 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.