我是NuGet的新手,來自Maven世界。用Nuget找到第三方許可證
最近我的任務是更新我們項目的第三方許可證信息。通過使用Maven項目,我可以使用license:download-licenses
插件獲取許可證信息。
我想知道的是,如果有一種方法可以使用Nuget獲取這些信息嗎?最好使用命令行界面,以便我可以在CI構建級別將其自動化。將其從大型手動預構建步驟中刪除。
編輯:
因爲我無法找到任何工具來做到這一點我放在一起LegSec command line utility。
我是NuGet的新手,來自Maven世界。用Nuget找到第三方許可證
最近我的任務是更新我們項目的第三方許可證信息。通過使用Maven項目,我可以使用license:download-licenses
插件獲取許可證信息。
我想知道的是,如果有一種方法可以使用Nuget獲取這些信息嗎?最好使用命令行界面,以便我可以在CI構建級別將其自動化。將其從大型手動預構建步驟中刪除。
編輯:
因爲我無法找到任何工具來做到這一點我放在一起LegSec command line utility。
據我所知,目前沒有任何東西可以直接從命令行獲取許可證信息作爲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")
}
只是一個說明 - 在VS2015'LicenseUrl'總是返回一個空字符串。 NuGet文檔說'LicenseUrl'將從病房的v3.x棄用,但沒有提及任何替代品 – 2015-11-20 05:33:17
LicenseUrl已被添加到NuGet 3.4或更高版本。 – 2016-05-06 08:57:39
我設法使用下面的命令許可信息:
@(@(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"
}
}
檢查我的答案here
有Visual Studio的一個非常有用的擴展,它會爲你,有隻需右鍵點擊解決方案。
感謝您發佈鏈接到您的項目!我今天使用了LegSec ...命令行的使用有點難以理解(一些試驗+錯誤),但功能非常好。 – crimbo 2014-04-18 22:15:15
顯然他們知道自2013年以來如何做,它從未以程序化方式暴露過:https://blog.nuget.org/20131011/friendly-license-names.html。我打開了一個您可能想要註冊的問題:https://github.com/NuGet/Home/issues/5793。 – 2017-08-23 09:15:13