在 VSTS 构建中将 ClickOnce ApplicationVersion 和 MinimumRequiredVersion 设置为最新
Set ClickOnce ApplicationVersion and MinimumRequiredVersion to date in VSTS Build
我在 CI 构建中有一个 visual studio 构建步骤,它使用以下 MSBuild 参数创建桌面应用程序的 clickonce 文件:
/target:publish /p:ApplicationVersion=$(Year:yyyy).$(Month).$(DayOfMonth).$(Build.BuildId) /p:MinimumRequiredVersion=$(Year:yyyy).$(Month).$(DayOfMonth).$(Build.BuildId) /p:InstallUrl=$(InstallUrl)
$(Build.BuildId) 和 $(InstallUrl) 变量被替换为正确的值,但 $(Year:yyyy)、$(Month) 和 $(DayOfMonth) 变量没有被替换。我使用相同的变量在“常规”选项卡上设置内部版本号格式,并且它们被正确替换。是否无法在 VSTS 的构建步骤中使用基于日期的变量?
编辑:使用 $(Build.BuildNumber) 似乎可行,但我喜欢在内部版本号格式中包含内部版本定义名称,这显然不适用于该版本。
$(Year:yyyy)
、$(Month)
、$(DayOfMonth)
是您只能在内部版本号格式字段中使用的标记,不能在其他任何地方使用。
我建议您在 Visual Studio 构建任务之前通过 PowerShell 任务(使用内联脚本)利用以下脚本 运行 即时创建这些变量:
$date = get-date
write-host "##vso[task.setvariable variable=Year;]$(($date).year)"
write-host "##vso[task.setvariable variable=Month;]$(($date).month)"
write-host "##vso[task.setvariable variable=Day;]$(($date).day)"
然后您可以使用 $(Year)
、$(Month)
和 $(Day)
代替您当前用作附加 MSBuild 参数的标记。
我在 CI 构建中有一个 visual studio 构建步骤,它使用以下 MSBuild 参数创建桌面应用程序的 clickonce 文件:
/target:publish /p:ApplicationVersion=$(Year:yyyy).$(Month).$(DayOfMonth).$(Build.BuildId) /p:MinimumRequiredVersion=$(Year:yyyy).$(Month).$(DayOfMonth).$(Build.BuildId) /p:InstallUrl=$(InstallUrl)
$(Build.BuildId) 和 $(InstallUrl) 变量被替换为正确的值,但 $(Year:yyyy)、$(Month) 和 $(DayOfMonth) 变量没有被替换。我使用相同的变量在“常规”选项卡上设置内部版本号格式,并且它们被正确替换。是否无法在 VSTS 的构建步骤中使用基于日期的变量?
编辑:使用 $(Build.BuildNumber) 似乎可行,但我喜欢在内部版本号格式中包含内部版本定义名称,这显然不适用于该版本。
$(Year:yyyy)
、$(Month)
、$(DayOfMonth)
是您只能在内部版本号格式字段中使用的标记,不能在其他任何地方使用。
我建议您在 Visual Studio 构建任务之前通过 PowerShell 任务(使用内联脚本)利用以下脚本 运行 即时创建这些变量:
$date = get-date
write-host "##vso[task.setvariable variable=Year;]$(($date).year)"
write-host "##vso[task.setvariable variable=Month;]$(($date).month)"
write-host "##vso[task.setvariable variable=Day;]$(($date).day)"
然后您可以使用 $(Year)
、$(Month)
和 $(Day)
代替您当前用作附加 MSBuild 参数的标记。