Untuk menjaga agar rumah kami tetap teratur, saya ingin secara otomatis mengumpulkan lisensi untuk dependensi proyek dalam dokumentasi kami, daripada harus menambahkannya secara manual.
Adakah yang tahu cara sederhana untuk melintasi secara terprogram seperangkat file CSPROJ dan mengekstrak informasi lisensi untuk paket yang direferensikan sebagai tautan atau string?
licensing
packages
package-managers
nuget
Byron Ross
sumber
sumber
Jawaban:
Salah satu cara saya tahu untuk mendapatkan informasi tersebut adalah dengan menggunakan PowerShell di Package Manager Console , dari dalam Visual Studio .
Pada dasarnya Anda dapat menggunakan cmdlet Get-Package untuk mendapatkan daftar paket yang direferensikan dalam proyek tertentu (atau dalam seluruh Solusi). Mengenai informasi lisensi untuk setiap paket, untuk apa yang saya lihat Anda hanya bisa mendapatkan URL lisensi dan bukan hanya string pendek yang mewakili jenis lisensi.
Berikut adalah contoh untuk Solusi milik saya yang mengembalikan daftar entri, masing-masing terdiri dari pengidentifikasi paket dan tautan ke lisensi:
Outputnya kira-kira seperti ini:
Elemen-elemen lain yang dapat dikembalikan didokumentasikan dalam referensi Nuspec , di bagian metadata (misalnya versi paket, deskripsi singkat, dll.).
sumber
Berdasarkan beberapa sumber, saya telah membuat skrip PowerShell yang membaca semua paket NuGet dan mengambil file lisensi dan meletakkannya di folder yang disebut "lisensi". Skrip harus dijalankan di root proyek (di mana folder "paket" berada).
Penafian: Saya bukan pakar PowerShell. Jalankan dengan risiko Anda sendiri :)
Saya tidak dapat menemukan kode sederhana yang mendeteksi lisensi yang dimiliki paket NuGet, berdasarkan file lisensi itu. Satu-satunya proyek yang mendekati solusi adalah Penerima Lisensi , tetapi ini dibangun di Ruby.
sumber
Saya berhasil mendapatkan informasi lisensi menggunakan perintah berikut:
sumber