gpt4 book ai didi

visual-studio - 自动创建 nuget 包和许可证列表

转载 作者:行者123 更新时间:2023-12-03 09:34:22 27 4
gpt4 key购买 nike

有什么方法可以自动更新我的解决方案中所有使用过的 nuget 包的列表,包括指向相应许可证的链接,我可以在我的应用程序中显示它?

从 Visual Studio 中的包管理器控制台运行以下命令为我提供所需的信息:

Get-Project | Get-Package | select Id, Version, LicenseUrl 

如何获取此列表 a) 在每次更改时自动更新以及 b) 将其放入我的应用程序中?

目标是有一个信息/关于对话框显示所有这些数据。

最佳答案

我找到了一种方法,很确定它有一些限制......

我在预构建事件中调用它:

powershell.exe -ExecutionPolicy Bypass -File $(ProjectDir)\Resources\tools\PreBuildScript.ps1  $(ProjectDir) $(SolutionDir) $(TargetDir)

这是如何 resources\tools\PreBuildScript.ps1好像:
param (
[Parameter(Mandatory=$True)]
[string]$ProjectDir,
[Parameter(Mandatory=$True)]
[string]$SolutionDir,
[Parameter(Mandatory=$True)]
[string]$TargetDir
)
[Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
$nupkgs = Get-ChildItem -Recurse -Filter *.nupkg -Path "$SolutionDir\packages"
$nuspecs = $nupkgs | %{ [IO.Compression.ZipFile]::OpenRead($_.FullName).Entries | where {$_.Fullname.EndsWith('.nuspec')} }
$metadata = $nuspecs | %{
([xml]([System.IO.StreamReader]$_.Open()).ReadToEnd()) | %{New-Object PSObject -Property @{
Version = $_.package.metadata.version
Authors = $_.package.metadata.authors
Title = IF ([string]::IsNullOrWhitespace($_.package.metadata.title)){$_.package.metadata.id} else {$_.package.metadata.title}
LicenseUrl = $_.package.metadata.licenseUrl
}}
}
$metadata | %{ '{0} {1}{4}Autor(en): {2}{4}Lizenz: {3}{4}{4}' -f $_.Title, $_.Version, $_.Authors, $_.LicenseUrl, [Environment]::NewLine } | Out-File "$ProjectDir\Resources\ThirdPartyLicenseOverview.txt"

这给了我一个(丑陋的)文本文件 Resources\ThirdPartyLicenseOverview.txt我可以将其包含为嵌入式资源以在我的应用程序中使用它。

不是最终的解决方案,而是前进的一步......

关于visual-studio - 自动创建 nuget 包和许可证列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44114370/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com