如果NuGet包被宣布为生产准备就绪,我该如何重新包装?

时间:2014-04-24 13:56:16

标签: nuget versioning nuget-package

我有一个生成几个NuGet包的解决方案,我在构建期间打包。我希望我的每晚构建标记为预发布,因此我相应地对我的软件包进行版本化:1.2.3-PreRelease0001。但是,一旦每晚构建通过测试,我想使用相同的包发布相同的版本,但使用非PreRelease版本:1.2.3

我的问题:如何使用其他版本重新打包NuGet包?我想我可以破解一些解压缩/编辑/ nuget pack脚本,但是有更好的方法吗?

备选方案:

  • 不要在构建过程中打包 - 打包在一个单独的过程中,我可以稍后重新运行 Con:如果我在构建期间打包,我可以直接从源代码访问<Content>个文件
  • 运行另一个版本,这次使用非PreRelease版本打包 Con:想要分发我测试的相同位...
  • 不要将夜间版本标记为PreRelease,而是将它们发布到单独的存储库中 Con: PreRelease软件包没有标记为这样,可能会被误解为已发布。
  • 在构建期间打包两次:一次使用PreRelease,一次不使用 Con:人们可能会想要引用非PreRelease版本。也许我可以将它们放在一些GeneratedDoNotTouch文件夹中......

1 个答案:

答案 0 :(得分:1)

在NuGet中没有用于更改包的元数据的公共API。我想说最后的解决方案,即在构建期间生成预发布和非预发布包,是最好的。

为防止人们意外使用非预发布包,您可以先在私有目录中创建它。然后,仅在构建通过测试后发布它。

是的,您可以从包中提取nuspec文件,进行必要的更改,然后将文件保存回包中。问题是如果更改了nuspec格式,这可能会停止工作。