如何自动检测我的NuGet包是否是最新的?

时间:2014-02-26 12:56:59

标签: c# msbuild nuget build-process nuget-package

如果我的项目使用的是现在已经过时的依赖项,我想在某处发出大声警告(可能我可能会将其挂钩到我们的构建中,因此使用某些过时的依赖项的构建会自动失败并且无法部署)

如果可能的话,我只想对我们其他内部项目的依赖开始这样做,这样如果我发布新版本的共享内部库,那么使用该库的所有其他项目都会被大声通知/要求更新到新的,但我们不必在每次升级时立即升级到最新版本的实体框架。

有没有办法从包管理器控制台或MSBuild任务轻松检查我的NuGet依赖项的全部或部分是最新的?

3 个答案:

答案 0 :(得分:3)

您可以在NuGet上获取所有已安装软件包和最新版本的列表。

我创建了一个PowerShell脚本来执行此操作。你可以在这里找到它:

Nuget, compare installed vs latest version

答案 1 :(得分:2)

如果需要,可以手动查询NuGet的公共API以检索包信息。他们有一个更新的JSON api,我可以在NodeJS应用程序中使用它们,并且它们有一个较旧的XML api。

JSON api

https://api.nuget.org/v3/index.json

软件包的所有版本https://api.nuget.org/v3/registration0/newtonsoft.json/index.json

版本的特定包: https://api.nuget.org/v3/registration0/newtonsoft.json/4.0.1.json

(请注意,网址中的包ID必须全部小写!)

XML api

https://nuget.org/api/v2/

所有套餐(分页-first 100):https://www.nuget.org/api/v2/Packages

下一页100: https://www.nuget.org/api/v2/Packages?$跳过= 100

版本的特定包:https://www.nuget.org/api/v2/Packages(Id='NewtonSoft.Json',Version='4.0.1')

使用XML版本我不知道列出包的所有版本的方法,但是当您访问版本化包时,<d:IsLatestVersion><d:IsAbsoluteLatestVersion>的布尔值(我'我不知道有什么不同......也许一个排除预发布版本?)

答案 2 :(得分:1)

另一种选择是订阅位于该页面底部nuget.org软件包网页中的RSS feed。