![](/img/trans.png)
[英]NuGet: Update a package to a specific version in all projects via PowerShell or CMD
[英]Nuget powershell command - find projects with specific package installed
我希望通過nuget控制台列出安裝了特定軟件包的項目。
例如:
get-project -all | get-package | ?{ $_.Id -like 'ThePackage' } | `
<Here I have all the packages, but I can't access the project name>
最后一部分應該類似於Select-Object project.Name
,但get-package不返回項目名稱,只返回包信息。
是的,這可能會更好。 一種方法是利用get-package接受項目過濾器的事實:
Get-Project | foreach-object {
get-package -ProjectName $_.Name | `
Add-Member -MemberType NoteProperty -Name ProjectName -Value $_.Name -passthru
} | select id, projectname | ft -auto -GroupBy projectname
我在最后對此屬性進行分組之前添加了每個包的projectname屬性。
由Johnny5編輯:為了得到我想要的確切結果,我編輯了這樣的命令:
Get-Project -all | foreach-object { get-package -ProjectName $_.Name | `
Add-Member -MemberType NoteProperty -Name ProjectName -Value $_.Name -passthru
} | where-object { $_.id -eq 'Id.Of.The.Package' } | select id, projectname
對於Get-Package cmdlet的2.0.0.0版,在項目中每次使用包時都會返回一個條目 - 並且包含項目名稱。
使用Visual Studio中的程序包管理器控制台中的以下命令檢查您的Get-Package版本。
get-command get-package
使用以下命令查找已安裝特定軟件包的所有項目。
get-package newtonsoft.json
如果您有興趣查找解決方案中哪些項目引用不同版本的任何軟件包,請嘗試以下命令。 它應該顯示一個包列表。 您可以選擇一個,單擊確定,它將顯示引用它們的項目。
get-package | group-object Id | %{$versions = ($_.Group | Group-object Version); if(($versions | measure-object).Count -gt 1){$versions;};} | %{$_.Group} | group-object Id, Version | sort-object Name | Out-GridView -OutputMode Single | %{$_.Group} | select-object -first 1 | %{ $version = $_.Version; get-package $_.Id;} | ?{$_.Version -eq $version}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.