Поиск сторонних лицензий с Nuget
Я немного новичок NuGet и пришел из мира Maven.
Недавно мне было поручено обновить информацию о третьей стороне для наших проектов. Работая с проектами Maven, я смог использовать плагин license:download-licenses
для получения информации о лицензии.
Что мне интересно, если есть способ получить эту информацию с помощью Nuget? Предпочтительно, используя интерфейс командной строки, чтобы я мог автоматизировать его на уровне сборки CI. Чтобы удалить его с большого этапа предварительной сборки вручную.
EDIT:
Поскольку мне не удалось найти какие-либо утилиты для этого, я собрал утилиту командной строки LegSec.
Ответы
Ответ 1
Насколько мне известно, в настоящее время нет ничего доступного для получения информации о лицензии непосредственно из командной строки в рамках сборки CI. Вам нужно будет создать приложение для открытия zip файла .nupkg, извлечь URL-адрес лицензии из файла .nuspec и загрузить лицензию с этого URL-адреса.
В качестве альтернативы вы можете использовать окно консоли диспетчера пакетов внутри Visual Studio и немного загрузить PowerShell файлы лицензий.
Ниже приведен простой пример, который получает файл лицензии для всех пакетов в проекте. Это нужно будет расширить, чтобы получить все проекты в решении, которые вы должны выполнить с командлетом Get-Project. Это потребует, чтобы кто-то запускал script для загрузки лицензий.
$wc = New-Object System.Net.WebClient
Get-Package -ProjectName YourProject | ForEach-Object {
$wc.DownloadFile($_.LicenseUrl, 'd:\licenses\' + $_.Id + ".html")
}
Ответ 2
Мне удалось получить информацию о лицензии с помощью следующей команды:
@(@(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"
}
}
Ответ 3
Проверьте мой ответ здесь
Существует очень полезное расширение для Visual Studio, которое делает это за вас, просто щелкнув правой кнопкой мыши на решении.