获取VS2015中Nuget包的许可证

时间:2016-05-04 18:01:46

标签: powershell nuget powershell-v3.0 nuget-package

有没有办法可以下载Nuget Packages许可证?我知道这已经被质疑/回答但是我希望能够使用VS2015 Update 2.使用powershell脚本来检查我的项目,然后创建.txt文件,其中包含带有许可URL的包名。

2 个答案:

答案 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。