2012-04-05 13 views
11

Sono un po 'un novizio NuGet e sono venuto dal mondo Maven.Ricerca di licenze di terze parti con Nuget

Recentemente sono stato incaricato di aggiornare le informazioni sulla licenza di terze parti per i nostri progetti. Lavorando con i progetti Maven, sono riuscito a utilizzare il plug-in license:download-licenses per ottenere le informazioni sulla licenza.

Quello che mi chiedo è se c'è un modo per ottenere queste informazioni usando Nuget? Preferibilmente utilizzando l'interfaccia della riga di comando in modo da poterla automatizzare a livello di build CI. Per rimuoverlo dal grande passo pre-compilazione manuale.

EDIT:

Dal momento che non sono riuscito a trovare nessuna utilità per fare questo ho messo insieme il LegSec command line utility.

+0

Grazie per aver pubblicato il link al tuo progetto! Oggi ho usato LegSec ... l'uso della riga di comando era un po 'difficile da capire (qualche errore di prova +), ma la funzionalità era ottima. – crimbo

+0

Apparentemente sanno come farlo dal 2013, non è mai stato esposto programmaticamente: https://blog.nuget.org/20131011/friendly-license-names.html. Ho aperto un problema che potresti voler invitare: https://github.com/NuGet/Home/issues/5793. –

risposta

11

Per quanto ne so, al momento non è disponibile nulla per ottenere le informazioni sulla licenza direttamente dalla riga di comando come parte di un build CI. Dovresti creare un'applicazione per aprire il file zip .nupkg, estrarre l'URL della licenza dal file .nuspec e scaricare la licenza da questo URL.

In alternativa è possibile utilizzare la finestra della console del gestore pacchetti in Visual Studio e con un po 'di PowerShell scaricare i file di licenza.

Un esempio semplice che ottiene il file di licenza per tutti i pacchetti in un progetto è mostrato di seguito. Questo dovrebbe essere esteso per ottenere tutti i progetti nella soluzione che dovresti essere in grado di fare con il cmdlet Get-Project. Ciò richiederebbe comunque a qualcuno di eseguire lo script per scaricare le licenze.

$wc = New-Object System.Net.WebClient 
Get-Package -ProjectName YourProject | ForEach-Object { 
    $wc.DownloadFile($_.LicenseUrl, 'd:\licenses\' + $_.Id + ".html") 
} 
+2

Solo una nota: in VS2015 'LicenseUrl' restituisce sempre una stringa vuota. La documentazione di NuGet dice che "LicenseUrl" sarà deprecato dalla v3.x sui reparti, ma non menziona alcuna alternativa –

+2

LicenseUrl è stato aggiunto in NuGet 3.4 o successivo. –

0

sono riuscito a ottenere le informazioni di licenza con il seguente comando:

@(@(Get-Project -All | ForEach-Object { 
    Get-Package -ProjectName $.ProjectName 
}) | Select Id -Unique) | ForEach-Object { 
    $pkg = $_ 
    $pkgId = $_.Id 
    if ($pkgId -notlike 'microsoft*') { 
     $url = Open-PackagePage $pkgId -License -WhatIf -PassThru 
     Write-Host "$pkgId $url" 
    } 
} 
0

Controllare la mia risposta here

V'è un'estensione molto utile per Visual Studio che fa per voi, con basta un clic destro sulla soluzione.

Problemi correlati