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

Jon*_*han 5 versioning nuget 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

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

\n\n

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

\n\n

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

\n