Para mantener nuestra casa en orden, quiero reunir automáticamente las licencias para las dependencias del proyecto en nuestra documentación, en lugar de tener que agregarlas manualmente.
¿Alguien sabe una manera simple de atravesar mediante programación un conjunto de archivos CSPROJ y extraer la información de licencia para los paquetes a los que se hace referencia como un enlace o cadena?
licensing
packages
package-managers
nuget
Byron Ross
fuente
fuente
Respuestas:
Una forma en que sé obtener dicha información es mediante el uso de PowerShell en la consola de Package Manager , desde Visual Studio .
Básicamente, puede usar el cmdlet Get-Package para obtener una lista de paquetes a los que se hace referencia en un proyecto específico (o en una Solución completa). Con respecto a la información de la licencia para cada paquete, por lo que he visto, solo puede obtener la URL de la licencia y no solo una cadena corta que representa el tipo de licencia.
Aquí hay un ejemplo para una Solución mía que devuelve una lista de entradas, cada una de las cuales consta del identificador del paquete y el enlace a la licencia:
El resultado es algo como esto:
Otros elementos que pueden devolverse se documentan en la referencia de Nuspec , en la sección de metadatos (por ejemplo, la versión del paquete, una breve descripción, etc.).
fuente
Basado en múltiples fuentes, he creado un script de PowerShell que lee todos los paquetes de NuGet y busca los archivos de licencia y los coloca en una carpeta llamada "licencias". El script debe ejecutarse en la raíz del proyecto (donde se encuentra la carpeta "paquetes").
Descargo de responsabilidad: no soy un experto en PowerShell. Corre bajo tu propio riesgo :)
No pude encontrar ningún código simple que detecte qué licencia tiene el paquete NuGet, en función de su archivo de licencia. El único proyecto que se acerca a una solución es el Licenciatario , pero se construye en Ruby.
fuente
Logré obtener la información de la licencia con el siguiente comando:
fuente