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

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

备择方案:

  • 不要在构建过程中打包-在单独的过程中打包,我可以稍后重新运行。
    缺点:如果在构建过程中打包,则可以直接从
  • 源访问<Content>文件
  • 运行另一个构建,这次与非PreRelease版本打包在一起。
    骗局:想要分发我测试过的完全相同的位...
  • 不要将每晚的构建标记为PreRelease,而是将它们发布到单独的存储库中。
    缺点: PreRelease软件包未标记为此类,并且可能会误认为已发布。
  • 在构建期间打包两次:一次使用PreRelease,一次不使用。
    缺点:人们可能会倾向于引用非PreRelease版本。也许我可以将它们放在GeneratedDoNotTouch文件夹中...
  • 最佳答案

    在NuGet中,没有公共(public)API可以更改程序包的元数据。我想说最后一种解决方案是最好的,即在构建过程中同时生成预发行版和非预发行包。

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

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

    关于nuget - 将NuGet软件包声明为可投入生产后,如何重新包装它们?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23271043/

    10-15 16:24