Чтобы сохранить наш дом в порядке, я хочу автоматически собирать лицензии для зависимостей проекта в нашей документации, а не добавлять их вручную.
Кто-нибудь знает простой способ программно пройти через набор файлов CSPROJ и извлечь информацию о лицензии для упомянутых пакетов в виде ссылки или строки?
licensing
packages
package-managers
nuget
Байрон Росс
источник
источник
Ответы:
Я знаю, как получить такую информацию, используя PowerShell в консоли диспетчера пакетов из Visual Studio .
В основном вы можете использовать командлет Get-Package, чтобы получить список пакетов, на которые есть ссылки в конкретном проекте (или во всем решении). Что касается информации о лицензии для каждого пакета, то, что я видел, вы можете получить только URL лицензии, а не просто короткую строку, представляющую тип лицензии.
Вот пример моего решения, возвращающего список записей, каждая из которых состоит из идентификатора пакета и ссылки на лицензию:
Вывод примерно такой:
Другие элементы, которые могут быть возвращены, описаны в справочнике Nuspec , в разделе метаданных (например, версия пакета, краткое описание и т. Д.).
источник
Основываясь на нескольких источниках, я создал сценарий PowerShell, который читает все пакеты NuGet, извлекает файлы лицензий и помещает их в папку, называемую «лицензии». Скрипт должен быть запущен в корне проекта (там, где находится папка «packages»).
Отказ от ответственности: я не эксперт PowerShell. Беги на свой страх и риск :)
Я не смог найти ни одного простого кода, который бы определял, какая лицензия у пакета NuGet, на основании его файла лицензии. Единственный проект, который приближается к решению, - это Лицензиат , но это сборка в Ruby.
источник
Мне удалось получить информацию о лицензии с помощью следующей команды:
источник