我正在使用Git,并希望当我合并到我的主分支时,如果我的nuget-package引用了其他dev / beta包,它将自动停止TeamCity中的进程。这样我可以确定我的版本总是引用其他版本包而没有预发布版本。
有没有办法使用MSBuild,Nuget或TeamCity来解决这个问题?
修改
据我了解,这不是使用MSBuild或Nuget开箱即用的。是否是为TeamCity进行预构建步骤以检查项目是否具有预发布引用的好方法?
答案 0 :(得分:0)
在引用这些包的解决方案的发布分支中,您必须将引用限制为仅非预发布并运行更新引用。
稍后当您将发布版本合并到dev和master时,您可以将dev分支重新绑定到该分支,然后dev可以通过再次使用预发行版软件包进行偏差。
您的CI服务器或Nuget不需要任何特殊功能来支持此功能。
但是没有真正的方法来停止构建,除非您创建一个特殊的工具来检查package.config文件中的版本。您可以将发布和预发布包的Feed分开,并限制还原以在构建期间仅释放Feed,但nuget将扫描所有配置,最终将找到这两个Feed。我知道的唯一解决方案是使用 paket 而不是Nuget。 Paket允许您指定每个解决方案的Feed配置。它还为您提供了明确指示您引用的版本和任何预发布限制。它还可以防止您在一个解决方案中为不同的项目使用同一个包的多个版本。
使用 paket 时,您可以检查paket.lock
文件中是否存在-unstable
的任何内容(假设您的软件包遵循SemVer)。像这样:
$ findstr "-unstable" paket.lock