2014-09-10 250 views
1

我想通過nuget控制檯列出安裝了特定軟件包的項目。Nuget powershell命令 - 查找已安裝特定軟件包的項目

例:

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,但得到的包不會返回項目名稱,只是包信息。

+0

我很困惑,當我來到了這個問題,我當時想嗯,我不記得問這個問題 – 2017-11-30 16:55:57

+1

我糊塗了太多,當我看到的評論,我喜歡嗯,我不記得離開此評論 – Johnny5 2017-12-02 02:04:52

回答

3

是的,這可能會更好。要做到這一點的方法之一是利用這一獲得包將接受項目的過濾器的事實優勢:

Get-Project | foreach-object { 
    get-package -ProjectName $_.Name | ` 
    Add-Member -MemberType NoteProperty -Name ProjectName -Value $_.Name -passthru 
    } | select id, projectname | ft -auto -GroupBy 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 
+0

'%'是ForEach的別名? – Johnny5 2014-09-12 12:48:07

+0

謝謝,我從你的命令中獲得了我想要的。如果你在'%'和'Add-Member'命令中添加一些解釋會很好:-) – Johnny5 2014-09-12 13:26:56

+0

百分比是'foreach-object'命令(你可以通過運行'get-help%'來找到這個命令。可以通過'get-help add-member'找到關於'add-member'的信息。 – x0n 2014-09-14 03:33:26

0

與Get-包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} 
相關問題