Azure DevOps - 将 MSBuild 属性作为参数传递给其他构建任务
Azure DevOps - Pass MSBuild properties as parameters to other build tasks
在 Azure DevOps 中,是否可以在生成任务期间导出 MSBuild 任务中定义的少量 MSBuild 属性,并将这些属性用作生成作业中其他任务的变量?
用例:构建期间计算的版本号
我们创建了一个 MSBuild 任务,作为构建的一部分,它根据 git 标记确定版本号。 MSBuild 任务使用它来设置程序集版本以及打包为构建一部分的可能的 nuget 包。
现在,在设置 Azure DevOps 构建管道时,我有一个单独的步骤来构建服务的安装程序(.msi 使用 Advanced Installer)。 我需要获取在 MSBuild 任务期间确定的版本并将其传递给 Advanced Installer 构建任务,以便对其进行相应的版本控制。如何实现?
作为解决方法,我们之前一直使用单独的构建任务,其中版本已使用 bash 脚本确定。然后导出到 VSO 变量并传递给两个任务,MSBuild 和 Advanced Installer build(MSBuild 任务可以使用预定义的 属性版本值)。现在我想摆脱计算版本的重复方式。
只要不关闭 msbuild 的控制台日志记录,就可以在 csproj 文件中使用 logging commands:
<Target Name="SetAzureDevOpsVariables" BeforeTargets="BeforeBuild">
<Message Importance="high"
Text="##vso[task.setvariable variable=ProductVersion]$(Version)" />
</Target>
$(Version)
将被 msbuild 替换为 属性 的值(您可以使用 PackageVersion
、FileVersion
等),代理将解释命令来自 MSBuild 的输出。 Importance="high"
将确保即使在日志详细程度降低时也能打印消息。
请注意,您还可以在 <Target>
元素上放置一个 Condition="'$(SYSTEM_TEAMPROJECTID)' != ''"
以仅 运行 Azure DevOps 构建上的此输出。
在 Azure DevOps 中,是否可以在生成任务期间导出 MSBuild 任务中定义的少量 MSBuild 属性,并将这些属性用作生成作业中其他任务的变量?
用例:构建期间计算的版本号
我们创建了一个 MSBuild 任务,作为构建的一部分,它根据 git 标记确定版本号。 MSBuild 任务使用它来设置程序集版本以及打包为构建一部分的可能的 nuget 包。
现在,在设置 Azure DevOps 构建管道时,我有一个单独的步骤来构建服务的安装程序(.msi 使用 Advanced Installer)。 我需要获取在 MSBuild 任务期间确定的版本并将其传递给 Advanced Installer 构建任务,以便对其进行相应的版本控制。如何实现?
作为解决方法,我们之前一直使用单独的构建任务,其中版本已使用 bash 脚本确定。然后导出到 VSO 变量并传递给两个任务,MSBuild 和 Advanced Installer build(MSBuild 任务可以使用预定义的 属性版本值)。现在我想摆脱计算版本的重复方式。
只要不关闭 msbuild 的控制台日志记录,就可以在 csproj 文件中使用 logging commands:
<Target Name="SetAzureDevOpsVariables" BeforeTargets="BeforeBuild">
<Message Importance="high"
Text="##vso[task.setvariable variable=ProductVersion]$(Version)" />
</Target>
$(Version)
将被 msbuild 替换为 属性 的值(您可以使用 PackageVersion
、FileVersion
等),代理将解释命令来自 MSBuild 的输出。 Importance="high"
将确保即使在日志详细程度降低时也能打印消息。
请注意,您还可以在 <Target>
元素上放置一个 Condition="'$(SYSTEM_TEAMPROJECTID)' != ''"
以仅 运行 Azure DevOps 构建上的此输出。