2016-05-04 13 views
1

Gibt es eine Möglichkeit, Nuget Packages-Lizenz herunterzuladen? Ich weiß, dass dies in Frage gestellt/beantwortet wurde, aber ich möchte, dass etwas mit VS2015 Update 2 funktioniert. Mit einem Powershell-Skript, das meine Projekte überprüft und dann die .txt-Datei entweder mit dem Paketnamen mit der Lizenz-URL erstellt.Erhalten Sie Lizenzen für die Nuget-Pakete in VS2015

Antwort

0

Die Lizenz-URL ist derzeit nicht von Powershell mit NuGet 3.

Es zu NuGet 3.4 hinzugefügt werden.

Das einfache PowerShell-Skript in diesem anderen StackOverflow answer funktioniert mit NuGet 3.4.

Wenn Sie eine ältere Version von NuGet 3 verwenden, können Sie Code schreiben, der auf die .nuspec-Datei im NuGet-Paket (.nupkg) schaut und die Lizenz-URL von dort liest.

+0

Ich habe Nuget 3.4.3, kann aber immer noch nicht den folgenden Befehl ausführen @ (Get-Project-Alle |? {$ _. ProjectName} |% {Get-Paket-ProjectName $ _. ProjectName}) | Sortieren-Eindeutig | % {$ pkg = $ _; Versuchen Sie es mit {(New-Object System.Net.WebClient) .DownloadFile ($ pkg.LicenseUrl, 'c: \ dev \ licenses \' + $ pkg.Id + ".txt")} Catch [system.exception] {Write- Host "Konnte die Lizenz für $ pkg nicht herunterladen"} – Sabby62

+0

Das Skript von dieser anderen [StackOverflow-Antwort] (http://stackoverflow.com/questions/10022013/finding-third-party-licenses-with-nuget/10055564#10055564) funktioniert bei mir mit NuGet 3.4.3. –

3

Ich habe es geschafft, die Liste der Lizenzen mit Visual Studio 2015 Update 2 mit diesem zu erhalten:

Split-Path -parent $dte.Solution.FileName | cd; New-Item -ItemType Directory -Force -Path ".\licenses"; @(Get-Project -All | ? { $_.ProjectName } | % { Get-Package -ProjectName $_.ProjectName | ? { $_.LicenseUrl } }) | Sort-Object Id -Unique | % { $pkg = $_; Try { if ($_.Id -notlike 'microsoft*' -and $_.LicenseUrl.StartsWith('http')) { Write-Host ("Download license for package" + $pkg.Id + " from " + $pkg.LicenseUrl); (New-Object System.Net.WebClient).DownloadFile($_.LicenseUrl, (Join-Path (pwd) 'licenses\') + $_.Id + ".html"); } } Catch [system.exception] { Write-Host ("Could not download license for" + $pkg.Id) } } 

Sie werden wahrscheinlich brauchen den Download-Pfad zu ändern, die derzeit erstellt er die Lizenzen Unterordner im Lösungsordner und Downloads dort. Außerdem werden alle Microsoft-Pakete herausgefiltert, aber wenn Sie sie benötigen, können Sie den Code einfach ändern. Dieser Code basiert auf dem Code this Post. Und ich bin mir sicher, dass es verbessert werden kann, weil ich mit Powershell nicht so viel zu Hause bin.