Para manter nossa casa em ordem, quero montar automaticamente licenças para dependências do projeto em nossa documentação, em vez de precisar adicioná-las manualmente.
Alguém conhece uma maneira simples de percorrer programaticamente um conjunto de arquivos CSPROJ e extrair as informações de licença dos pacotes referenciados como um link ou string?
licensing
packages
package-managers
nuget
Byron Ross
fonte
fonte
Respostas:
Uma maneira de obter essas informações é usar o PowerShell no Package Manager Console , no Visual Studio .
Basicamente, você pode usar o cmdlet Get-Package para obter uma lista de pacotes referenciados em um projeto específico (ou em uma Solução inteira). Com relação às informações de licença de cada pacote, pelo que eu vi, você pode obter apenas o URL da licença e não apenas uma sequência curta que representa o tipo de licença.
Aqui está um exemplo de uma solução minha retornando uma lista de entradas, cada uma consistindo no identificador do pacote e no link para a licença:
A saída é algo como isto:
Outros elementos que podem ser retornados estão documentados na referência Nuspec , na seção de metadados (por exemplo, a versão do pacote, uma breve descrição, etc.).
fonte
Com base em várias fontes, criei um script do PowerShell que lê todos os pacotes do NuGet e busca os arquivos de licença e o coloca em uma pasta chamada "licenças". O script deve ser executado na raiz do projeto (onde está localizada a pasta "packages").
Isenção de responsabilidade: não sou especialista em PowerShell. Corra por sua conta e risco :)
Não consegui encontrar nenhum código simples que detecta qual licença o pacote NuGet possui, com base no seu arquivo de licença. O único projeto que chega perto de uma solução é o Licenciado , mas isso é construído no Ruby.
fonte
Consegui obter as informações da licença usando o seguinte comando:
fonte