有没有办法可以下载Nuget Packages许可证?我知道这已经被质疑/回答但是我希望能够使用VS2015 Update 2.使用powershell脚本来检查我的项目,然后创建.txt文件,其中包含带有许可URL的包名。
答案 0 :(得分:4)
我已经设法使用Visual Studio 2015 Update 2获取许可证列表:
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) } }
您可能需要修改下载路径,目前它在解决方案文件夹中创建许可证子文件夹并在那里下载。此外,它还会过滤掉所有Microsoft软件包,但如果您需要它们,则可以轻松修改代码。
此代码基于this帖子的代码。而且我确信它可以改进,因为我在PowerShell的主场并不是那么多。
答案 1 :(得分:0)
目前,PowerShell使用NuGet 3无法使用许可网址。
它已被添加到NuGet 3.4。
此另一个StackOverflow answer中的简单PowerShell脚本适用于NuGet 3.4。
如果您使用的是旧版本的NuGet 3,那么您可以编写一些代码来查看NuGet包(.nupkg)中的.nuspec文件,并从那里读取许可URL。