Nuget powershell命令 - 查找已安装特定软件包的项目
问题描述:
我想通过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
,但得到的包不会返回项目名称,只是包信息。
答
是的,这可能会更好。要做到这一点的方法之一是利用这一获得包将接受项目的过滤器的事实优势:
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
答
与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}
我很困惑,当我来到了这个问题,我当时想嗯,我不记得问这个问题 – 2017-11-30 16:55:57
我糊涂了太多,当我看到的评论,我喜欢嗯,我不记得离开此评论 – Johnny5 2017-12-02 02:04:52