У меня есть единственная родительская папка, которая содержит несколько подпапок, каждая из которых содержит файл решения VS С#. Каждая подпапка с решением может также содержать еще несколько внутренних подпапок с .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
его принял?
В конце концов моя цель состоит в том, чтобы извлечь все лицензионные пути для каждого возможного пакета, используемого во всех проектах.