是否有任何通过MSBuild任务、目标或其他方式访问的API,允许我查询给定PackageReference将解析(或已经解决)到哪个版本的NuGet包?
例如,如果我有一个csproj
<PackageReference Include=“MyPkg” Version=“1.*”/>我有一个定制的目标
<MyTarget>
<GetVersionOfResolvedPackageReference Name=“MyPkg” OutputProperty=“IWantToKnowThis” /> <!— or something —>
...发布于 2018-08-12 16:03:29
当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文件中写入结果。您可以通过MSBuild任务调用执委会脚本,然后通过ReadLinesFromFile读取文件并执行进一步的处理。
备注:表示的脚本将为多个项目生成
PackageReference行的副本。
https://stackoverflow.com/questions/51752735
复制相似问题