在 nupkg 中编辑 nuspec 文件

Posted

技术标签:

【中文标题】在 nupkg 中编辑 nuspec 文件【英文标题】:edit nuspec file in nupkg 【发布时间】:2018-02-17 16:50:46 【问题描述】:

我想在 TFS 上的 ci 进程之后创建一个语义版本化的 nupkg。 nupkg 应该如下所示。

MSVersioningSample.1.0.7-ci-20170926-184446.nupkg

但是,当我决定它是一个发布版本时。我想重命名 nupgk 并将其重新发布到 nuget feed 作为发布版本。

MSVersioningSample.1.0.7.nupkg

当我重命名 nupkg 文件并发布它时,它的版本号仍然保持不变,并且在发布期间发生冲突。

然后,我意识到了。 nupkg 文件中有一个 .nuspec 文件,我必须更改 nuspec 文件中的版本号。

我的问题是,如何使用 (powershell) 脚本编辑 nupkg 中的 nuspec 文件?

【问题讨论】:

【参考方案1】:

似乎您想使用预发布版本 nupkg,但在准备发布时删除预发布。您必须重写nuspec 文件中的<version> 元素。但是处理所有情况并不是那么容易,例如,如果您的构建生成了多个包,其中一些包相互依赖?现在您还需要发现依赖图并重写适当的元素。

要更新“*.nuspec”文件中的版本字段,您可以在 GitHub 中引用此 powershell 脚本:Nuspec Auto Update

另一种解决方法是在构建过程中添加两个 nuget 打包步骤。 一个带有-ci 号码的包,一个没有。

然后你只需要确保只将“发布”包复制到 ArtifactStagingDirectory 已经没有预发布段

还要设置您的版本,以便它使用内部版本号作为版本名称。一个小问题,其中包括 -ci 号码。

【讨论】:

以上是关于在 nupkg 中编辑 nuspec 文件的主要内容,如果未能解决你的问题,请参考以下文章

从本地 nupkg 安装自定义模板包含其他文件

如何在创建nuget包时使用-NoDefaultExcludes

nuget打包

为啥 Chocolatey 无法打包一个 ~2GB 的独立包?

octopack nuget 包版本

我应该在存储库中发布nuspec文件吗?