In a quick aide-memoire for next time I need to use it: here’s a Powershell snippet that will return a list of all unique package names in all .NET Core projects under the current folder:
get-childitem -recurse -filter *.csproj |
foreach { get-content $_.FullName } |
select-string -pattern "PackageReference Include=""(.+?)""" |
% { $_.matches[0].Groups[1].Value } |
sort-object -unique
Line by line…
- Get all
*.csproj
in the current and child folders - Read the content of each one
- Extract every line that matches the specific regex and extract the name of the package
- Grab the package name group
- Sort & filter to unique values
This outputs something like
CommandLineParser
CsvHelper
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging.Console