2014-09-10 201 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} 
相关问题