【发布时间】:2022-12-17 21:13:12
【问题描述】:
我有一个包含 Android 和 iOS 项目的 MAUI 应用程序。当我使用 Azure DevOps 脚本构建此应用程序时,我想自动更改应用程序版本。
我怎样才能做到这一点?
【问题讨论】:
标签: azure-devops maui
我有一个包含 Android 和 iOS 项目的 MAUI 应用程序。当我使用 Azure DevOps 脚本构建此应用程序时,我想自动更改应用程序版本。
我怎样才能做到这一点?
【问题讨论】:
标签: azure-devops maui
在您的 MAUI 应用 .csproj 文件中,添加以下指令:
<Target Name="UpdateAndroidAppVersion">
<XmlPoke XmlInputPath="PlatformsAndroidAndroidManifest.xml" Namespaces="<Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' />" Query="manifest/@android:versionCode" Value="$(VersionCode)" />
<XmlPoke XmlInputPath="PlatformsAndroidAndroidManifest.xml" Namespaces="<Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' />" Query="manifest/@android:versionName" Value="$(VersionNumber).$(BuildNumber)" />
</Target>
<Target Name="UpdateIOSAppVersion">
<XmlPoke XmlInputPath="Platforms/iOS/Info.plist" Query="//dict/key[. = 'CFBundleVersion']/following-sibling::string[1]" Value="$(BuildNumber)" />
<XmlPoke XmlInputPath="Platforms/iOS/Info.plist" Query="//dict/key[. = 'CFBundleShortVersionString']/following-sibling::string[1]" Value="$(VersionNumber).$(BuildNumber)" />
</Target>
在您的 azure-pipelines.yml 脚本中,在顶层声明变量以控制版本表示(特定变量值仅作为示例显示):
variables:
- name: versionNumber
value: "2023.1"
- name: buildNumber
value: $[counter(variables['versionNumber'], 0)]
- name: versionCode
value: $[counter('versionCode', 1)]
然后,在您的 yml 脚本中,分别为 android 和 ios 作业声明以下 MSBuild 指令:
安卓作业指令:
- task: MSBuild@1
displayName: "Update Android App Version"
inputs:
solution: '**/MyMAUIApplication.csproj'
msbuildArguments: '/t:UpdateAndroidAppVersion /p:VersionNumber="$(versionNumber)" /p:VersionCode="$(versionCode)" /p:BuildNumber="$(buildNumber)"'
iOS工作指令:
- task: MSBuild@1
displayName: "Update iOS App Version"
inputs:
solution: '**/MyMAUIApplication.csproj'
msbuildArguments: '/t:UpdateIOSAppVersion /p:VersionNumber="$(versionNumber)" /p:VersionCode="$(versionCode)" /p:BuildNumber="$(buildNumber)"'
【讨论】: