NuGet Packager 版本使用内部版本号,添加 -beta

爵士乐

我的目标是部署 NuGet 包(到内部 Nuget 服务器),根据日期和最后修订版自动增加版本,并包含 -beta 标记。

我正在使用 VSTS 使用 cake 构建和打包,构建号格式为$(BuildDefinitionName)_2.0.$(Date:yyMMdd)$(Rev:.r)我有一个 .nuspec 清单文件,它指定:$version$和一个 NuGet Packager:

钍

这很好用。但是现在,我想要一个 NuGet 打包器的选项,它生成一个标记为 beta 的包,因此在 VS NuGet 包管理器中显示为预发布。如果我使用 NuGet Packager 中附加的“-beta”对版本号进行硬编码,我可以做到这一点:在此处输入图片说明

但是如何包含 -beta 标记和内部版本号?我想我需要在NuGet 参数包含一个变量,该变量将返回$(BuildDefinitionName)_2.0.$(Date:yyMMdd)$(Rev:.r)加上“-beta”,但我不确定如何。我试图创建一个变量(下变量与版本号格式为值选项卡),然后在引用参数的NuGet(-Version变量theVariable),但由于错误的变量不支持接收。

我可能把这一切都弄错了,但是我的搜索没有找到关于如何从日期自动增加版本的任何提示,并包含一个 -beta 标签。

Leo Liu-MSFT

NuGet Packager 版本使用内部版本号,添加 -beta

我可以在我身边重现你的场景。在我看来,Nuget pack带有内部版本号的任务不支持字符或数字。您可以检查此任务

case "byBuildNumber":
                tl.debug("Getting version number from build number")

                if(tl.getVariable("SYSTEM_HOSTTYPE") === "release")
                {
                    tl.setResult(tl.TaskResult.Failed, tl.loc("Error_AutomaticallyVersionReleases"));
                    return;
                }

                let buildNumber: string =  tl.getVariable("BUILD_BUILDNUMBER");
                tl.debug(`Build number: ${buildNumber}`);

                let versionRegex = /\d+\.\d+\.\d+(?:\.\d+)?/;
                let versionMatches = buildNumber.match(versionRegex);
                if (!versionMatches)
                {
                    tl.setResult(tl.TaskResult.Failed, tl.loc("Error_NoVersionFoundInBuildNumber"));
                    return;
                }

                if (versionMatches.length > 1)
                {
                    tl.warning(tl.loc("Warning_MoreThanOneVersionInBuildNumber"))
                }

                version = versionMatches[0];
                break;

这就是为什么当我们在我们的内部版本号中使用它们时,字段$(BuildDefinitionName)beta不能出现在我们的包版本中的原因

如果我们在 nuget 参数中指定了 nuget 版本,但此参数无法解析预定义的变量,例如$(Rev:.r).

这两种情况的局限性导致了您当前的问题。

解决此问题的解决方法是使用带有参数的 nuget 自定义任务-version $(Build.BuildNumber)$(BuildDefinitionName)从我们的内部版本号格式移动字段,否则,我们仍然收到版本无效的错误。

所以,你 nuget custom 看起来像:

在此处输入图片说明

和内部版本号格式:

在此处输入图片说明

现在,您可以看到它运行良好:

在此处输入图片说明

笔记:

您说您使用 VSTS 使用 cake 构建和打包,但您发布的图像显示您在 TFS 2015中使用 NuGet Packagertask 如果您确定使用 TFS 2015,恐怕上述解决方法对您不起作用。因为自定义 nuget 任务不支持 TFS 2015。

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

VSTS-使用AssemblyInfo并附加内部版本号的NuGet版本

在play.sbt中使用Jenkins内部版本号通过sbt-native-packager构建RPM

NuGet Packager Task在VSTS中使用错误的MSBuild?

VSO构建vNext-Nuget程序包构建步骤-使用内部版本号对程序包进行版本控制

更新相同版本号的Nuget软件包

如何使用程序集中的版本号创建预发布的nuget软件包

使用“ nuget.exe恢复解决方案”时,软件包文件夹中的版本号错误

TFS NuGet Packager 任务禁用 pdb 生成

团队服务:Nuget Packager 任务失败

Gitversion在AzureDevops构建管道中回滚了我的NuGet软件包的版本号

NuGet-禁止覆盖软件包(具有相同的名称和版本号)

无法将Bootstrap 4(beta)nuget软件包安装到.Net MVC(.Net版本4.6.2)

在Azure Devops中建立管道时,管理nuget版本从Beta到VS2017 for .net core2.1中的版本

C#:从字符串版本号中过滤诸如 `-beta1` 和 `hotfix` 之类的内容

正则表达式从nuget包文件名中解析包名称和版本号

Nuget软件包不包含最新代码,除非在项目属性中修改了版本号

Azure DevOps Nuget工件提要忽略软件包版本号的最后一位(如果为零)

使用内部版本号标记Docker文件

如何使用Maven获取Jenkins内部版本号

使用package.json中的内部版本号

使用PlatformIO自动增加内部版本号

更好的增加内部版本号的方法?

在bash中增加内部版本号

Xcode项目的“内部版本号”

AssemblyInfo内部版本号未更新

使用自动版本控制最佳实践发布内部 NuGet 包

apiVersion和Beta版本

Beta版本的Android OS

创建依赖于Beta的nuget