NuGet从Feed获取最新的包裹

时间:2013-01-30 21:03:43

标签: tfs nuget tfs2012 nuget-package nuget-server

我有一个环境,我在TFS中构建了几个库解决方案。在构建过程结束时,脚本将它们打包到NuGet包中并将它们推送到我们的本地feed。

现在我们可以在上游项目中包含这些日常变化较小的库。

这些库以及我们的上游项目通常在同一版本中分支。基本上后备箱是我们不断发展的最新版本。在分支之前说干线是3.0.0.123,123是一个正在运行的内部版本号。在某些时候,我们将当前主干标记为我们将要发布的内容并将其分支。分支时干线的版本号成为该分支的版本,我们会以任何适当的方式为干线增加版本,使我们感觉可能是下一个版本(比如3.1.0.456)

这对于我们如何使用NuGet有点奇怪。我们希望分支3.0.0.456使用分支中的lateset库(可能是3.0.0.457)和trunk使用trunk中的最新版本(3.1.0.789)

那么这基本上归结为是否可以使用NuGet为解决方案设置类似于NuGet在包中定义依赖关系时使用的方式?

理想情况下,我想告诉分支上游应用程序使用[3.0.0.456,3.1]并使用trunk来使用最新版本(没有版本)。在这种情况下,它会选择分支将获取下一个分支构建(3.0.0.457),并且主干将获取发布到源的最后一个NuGet包。

我作为可能的解决方案提出的唯一想法是使用构建模板的参数,并在运行NuGet目标之前使用它来更新package.config文件。

我道歉,如果这应该在SuperUser或其他地方进行......

1 个答案:

答案 0 :(得分:1)

在做了一些挖掘以让我的构建为我们的库项目做一些自动创建包之后,我得出了(错误的)结论,这是NuGet的限制。我为任何XSD文档解析了它们的源代码来描述它们的XML,这样我就可以看到它们的nuspec是如何工作的。

虽然我有他们的来源,但我开始研究如何修改package.config文件以接受他们的模式以限制版本。经过一番挖掘后,我发现了一个可以添加到package.config:allowedVersions中的包节点的属性。这正是我想要添加的内容!

一旦掌握了这些信息,我就可以更深入地了解它是如何实现的。事实证明,此功能已存在一段时间,甚至记录在他们的文档网站上:http://docs.nuget.org/docs/reference/versioning

位于底部的依赖版本控制指南中。我必须完全掩盖它或从未读过那么远!

事实证明这不是问题,唯一的问题是我的无知。只是该页面上任何Google员工的参考!

消息来源(位于页面底部):NuGet Versioning