使用PowerShell获取来自多个解决方案的软件包列表

问题描述

我有一个父文件夹,其中包含多个子文件夹,每个子文件夹均包含VS C#解决方案文件。每个带有解决方案的子文件夹还可能包含几个带有.csproj文件的内部子文件夹。 看起来可能是这样的:

Parent
   |-->A
   |   |-->a.sln
   |       X
   |       |-->x.csproj
   |       Y
   |       |-->y.csproj
   |-->B
        |-->b.sln
            Z
            |-->z.csproj
            W
            |-->w.csproj

我想获取所有项目使用的所有软件包(依赖项)的列表。以后再用它来获取许可证。 我知道有一个选项可以运行:

@( Get-Project -All | ? { $_.ProjectName } | % { Get-Package -ProjectName $_.ProjectName } )

但是由于我不是在VS中打开解决方案,而只是在一个文件夹中打开,所以它不起作用。 我试图通过运行脚本从每个解决方案中获取所有项目的列表:

$slnFiles = Get-ChildItem -Path $parentPath -Directory | % { Get-ChildItem $_ -File -Filter "*.sln"}
$projList = @()
foreach ($file in $slnFiles){
  dotnet sln $slnFile.FullName list | % {if($_ -like '*.csproj'){$projList += $_}}
}

哪位给了我

X\x.csproj
Y\y.csproj
Z\z.csproj
W\w.csproj

如果我尝试将项目路径/名称与Get-Package -ProjectName x一起使用,则会收到错误消息:

Get-Package : Project 'x' is not found.

我在这里停留了一段时间。如何以Get-Package接受的方式获取项目列表?
最终,我的目标是为所有项目中使用的每个可能包提取所有许可证路径。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...