从NuGet 如何解决包依赖项:
当 NuGet 还原过程在构建之前运行时,它首先在内存中解析依赖关系,然后使用 PackageReference 将生成的图形写入项目的 obj 文件夹中名为 project.assets.json 的文件。MSBuild 然后读取此文件并将其转换为可以找到潜在引用的一组文件夹,然后将它们添加到内存中的项目树中。
<#
.Synopsis
Represents the method that
returns the project.assets
content as object.
#>
function Get-ProjectAssest([System.String]$Assest) {
return (Get-Content $Assest | ConvertTo-Json | ConvertFrom-Json).value |
ConvertFrom-Json
}
Get-ChildItem -Path . 'project.assets.json' -Recurse | ForEach-Object { Get-ProjectAssest($_.FullName) } | ForEach-Object {
# K = Package Identity
# V = Package Version
$_.libraries | ForEach-Object { $_.PSObject.Properties.Name } | Out-File 'PackageReference.ini' -Append
}
此PowerShell
脚本递归解析目录以查找project.assets.json
并将结果写入PackageReference.ini
文件。您可以通过Exec任务从 MSBuild 调用脚本,然后通过ReadLinesFromFile读取文件并执行进一步处理。
注意:表示的脚本将为多个项目生成重复的PackageReference
行。