找出所有项目引用了哪些 NuGet 包、版本号、对应项目路径,并筛选出“同一个包名但版本不同”的情况。

全局扫描所有 .csproj 文件

打开 PowerShell,运行以下脚本(替换为你的代码根目录):

$root = "D:\YourCodeRoot"
$results = Get-ChildItem -Path $root -Recurse -Filter *.csproj | ForEach-Object {
    $proj = $_.FullName
    [xml]$xml = Get-Content $proj
    $xml.Project.ItemGroup.PackageReference | Where-Object { $_ } | ForEach-Object {
        [PSCustomObject]@{
            Project = $proj
            Package = $_.Include
            Version = $_.Version
        }
    }
}

可选 输出所有包引用

$results | Out-GridView  # 可视化查看

筛选“同一个包名但版本不同”的包

$duplicates = $results | Group-Object Package | Where-Object { $_.Group.Version | Select-Object -Unique | Measure-Object | ForEach-Object { $_.Count -gt 1 } }

$duplicates | ForEach-Object {
    Write-Host "📦 包名: $($_.Name)"
    $_.Group | Format-Table Project, Version
}

输出示例:
image

posted @ 2025-09-22 11:36  cnblogsName  阅读(8)  评论(0)    收藏  举报