【发布时间】:2016-05-04 18:01:45
【问题描述】:
有没有办法可以下载 Nuget Packages 许可证?我知道这已经被质疑/回答了,但我想要一些与 VS2015 Update 2 一起使用的东西。有一个 powershell 脚本来检查我的项目,然后创建 .txt 文件,或者具有带有许可证 url 的包名称。
【问题讨论】:
标签: powershell nuget powershell-3.0 nuget-package
有没有办法可以下载 Nuget Packages 许可证?我知道这已经被质疑/回答了,但我想要一些与 VS2015 Update 2 一起使用的东西。有一个 powershell 脚本来检查我的项目,然后创建 .txt 文件,或者具有带有许可证 url 的包名称。
【问题讨论】:
标签: powershell nuget powershell-3.0 nuget-package
我已经设法获得了 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) } }
您可能需要修改下载路径,目前它会在解决方案文件夹中创建 licenses 子文件夹并在那里下载。它还会过滤掉所有 Microsoft 软件包,但如果您需要它们,可以轻松修改代码。
此代码基于 this 帖子中的代码。而且我确信它可以改进,因为我对 powershell 不太熟悉。
【讨论】:
当前无法从带有 NuGet 3 的 PowerShell 中获得许可证 URL。
已添加到NuGet 3.4。
另一个StackOverflow answer 中的简单 PowerShell 脚本适用于 NuGet 3.4。
如果您使用的是旧版本的 NuGet 3,您需要编写一些代码来查看 NuGet 包 (.nupkg) 中的 .nuspec 文件并从那里读取许可证 URL。
【讨论】: