我是一个 NuGet 新手,来自 Maven 世界。
最近我的任务是更新我们项目的第三方许可信息。使用 Maven 项目,我已经能够使用该license:download-licenses
插件来获取许可证信息。
我想知道是否有办法使用 Nuget 获取这些信息?最好使用命令行界面,这样我就可以在 CI 构建级别自动化它。从大型手动预构建步骤中删除它。
编辑:
由于我找不到任何实用程序来执行此操作,因此我将LegSec 命令行实用程序放在一起。
我是一个 NuGet 新手,来自 Maven 世界。
最近我的任务是更新我们项目的第三方许可信息。使用 Maven 项目,我已经能够使用该license:download-licenses
插件来获取许可证信息。
我想知道是否有办法使用 Nuget 获取这些信息?最好使用命令行界面,这样我就可以在 CI 构建级别自动化它。从大型手动预构建步骤中删除它。
编辑:
由于我找不到任何实用程序来执行此操作,因此我将LegSec 命令行实用程序放在一起。
据我所知,目前没有任何东西可以直接从命令行获取许可证信息作为 CI 构建的一部分。您需要创建一个应用程序来打开 .nupkg zip 文件,从 .nuspec 文件中提取许可证 url 并从该 url 下载许可证。
或者,您可以使用 Visual Studio 中的包管理器控制台窗口,并使用一些 PowerShell 下载许可证文件。
下面显示了一个获取项目中所有包的许可证文件的简单示例。这需要扩展以获取解决方案中的所有项目,您应该能够使用 Get-Project cmdlet 完成这些项目。这仍然需要有人运行脚本来下载许可证。
$wc = New-Object System.Net.WebClient
Get-Package -ProjectName YourProject | ForEach-Object {
$wc.DownloadFile($_.LicenseUrl, 'd:\licenses\' + $_.Id + ".html")
}
我设法使用以下命令获取许可证信息:
@(@(Get-Project -All | ForEach-Object {
Get-Package -ProjectName $.ProjectName
}) | Select Id -Unique ) | ForEach-Object {
$pkg = $_
$pkgId = $_.Id
if ($pkgId -notlike 'microsoft*') {
$url = Open-PackagePage $pkgId -License -WhatIf -PassThru
Write-Host "$pkgId $url"
}
}