簡體   English   中英

Nuget powershell命令 - 查找安裝了特定軟件包的項目

[英]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.

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