Aby utrzymać porządek w naszym domu, chcę automatycznie gromadzić licencje na zależności projektów w naszej dokumentacji, zamiast dodawać je ręcznie.
Czy ktoś zna prosty sposób na programowe przeglądanie zestawu plików CSPROJ i wyodrębnianie informacji o licencji dla odnośnych pakietów jako łącza lub łańcucha?
licensing
packages
package-managers
nuget
Byron Ross
źródło
źródło
Odpowiedzi:
Jednym ze znanych mi sposobów uzyskania takich informacji jest użycie programu PowerShell w konsoli Menedżera pakietów z poziomu Visual Studio .
Zasadniczo można użyć polecenia cmdlet Get-Package, aby uzyskać listę pakietów, do których istnieją odniesienia w określonym projekcie (lub w całym rozwiązaniu). Jeśli chodzi o informacje o licencji dla każdego pakietu, za to, co widziałem, możesz uzyskać tylko adres URL licencji, a nie tylko krótki ciąg reprezentujący typ licencji.
Oto przykład mojego rozwiązania zwracającego listę wpisów, z których każdy składa się z identyfikatora paczki i łącza do licencji:
Wynik jest mniej więcej taki:
Inne elementy, które można zwrócić, są udokumentowane w odnośniku Nuspec , w sekcji metadanych (np. Wersja pakietu, krótki opis itp.).
źródło
Na podstawie wielu źródeł stworzyłem skrypt PowerShell, który odczytuje wszystkie pakiety NuGet, pobiera pliki licencji i umieszcza je w folderze o nazwie „licencje”. Skrypt powinien zostać uruchomiony w katalogu głównym projektu (gdzie znajduje się folder „paczki”).
Oświadczenie: Nie jestem ekspertem od PowerShell. Uruchom na własne ryzyko :)
Nie mogłem znaleźć żadnego prostego kodu, który wykryłby, jaką licencję ma pakiet NuGet, na podstawie jego pliku licencji. Jedynym projektem zbliżonym do rozwiązania jest Licencjobiorca , ale jest on wbudowany w Ruby.
źródło
Udało mi się uzyskać informacje o licencji za pomocą następującego polecenia:
źródło