Licensing 使用Nuget查找第三方许可证

Licensing 使用Nuget查找第三方许可证,licensing,nuget,Licensing,Nuget,我是一个新手,来自专业人士的世界 最近,我的任务是更新我们项目的第三方许可证信息。使用Maven项目,我已经能够使用license:download licenses插件获取许可证信息 我想知道的是,是否有一种方法可以使用Nuget获取这些信息?最好是使用命令行界面,这样我就可以在CI构建级别实现自动化。将其从大型手动预构建步骤中删除 编辑: 因为我找不到任何实用程序来执行此操作,所以我将。放在一起。据我所知,目前没有任何工具可以作为CI构建的一部分直接从命令行获取许可证信息。您需要创建一个应用

我是一个新手,来自专业人士的世界

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

我想知道的是,是否有一种方法可以使用Nuget获取这些信息?最好是使用命令行界面,这样我就可以在CI构建级别实现自动化。将其从大型手动预构建步骤中删除

编辑:


因为我找不到任何实用程序来执行此操作,所以我将。

放在一起。据我所知,目前没有任何工具可以作为CI构建的一部分直接从命令行获取许可证信息。您需要创建一个应用程序来打开.nupkg zip文件,从.nuspec文件中提取许可证url并从该url下载许可证

或者,您可以使用VisualStudio中的PackageManager控制台窗口,并使用一些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"
    }
}

感谢您发布项目链接!我今天用了LegSec。。。命令行的用法有点难以理解(一些尝试+错误),但功能很棒。显然,他们从2013年就知道如何使用它,只是从来没有以编程方式公开过:。我打开了一个问题,您可能希望对此进行投票:。只是一个注释-在VS2015中,“LicenseUrl”始终返回空字符串。NuGet文档称,wards上的v3.x版本将不推荐使用“LicenseUrl”,但S没有提及任何替代方案。LicenseUrl已添加回NuGet 3.4或更高版本中。