Поиск сторонних лицензий с 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, которое делает это за вас, просто щелкнув правой кнопкой мыши на решении.