使用Nuget寻找第三方许可证

时间:2012-04-05 02:44:27

标签: licensing nuget

我是一个NuGet新手,来自Maven世界。

最近,我的任务是更新项目的第三方许可证信息。使用Maven项目,我已经能够使用license:download-licenses插件获取许可证信息。

我想知道是否有办法使用Nuget获取此信息?最好使用命令行界面,这样我就可以在CI构建级别自动化它。要从大型手动预构建步骤中删除它。

修改

由于我无法找到任何实用程序来执行此操作,因此我将LegSec command line utility

放在一起

2 个答案:

答案 0 :(得分:11)

据我所知,目前没有任何东西可以直接从命令行获取许可证信息,作为CI构建的一部分。您需要创建一个应用程序来打开.nupkg压缩文件,从.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")
}

答案 1 :(得分:0)

我设法通过以下命令获取许可证信息:

@(@(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"
    }
}