如何自动增加在 Azure Pipeline 中创建的 .msixupload 文件的包版本号?

How can I auto-increment the package version number for a .msixupload file created in an Azure Pipeline?

我正在使用 Azure Pipeline,当我提交到我的 GitHub 存储库时,它会自动 运行s。 .yml 文件生成一个 .msixupload 文件(用于 UWP)以上传到 Microsoft Store。但是,我无法上传生成的 .msixupload 文件,因为 .appxmanifest 文件中的版本号永远不会改变,而且我正在尝试为现有应用构建更新。每次 Azure Pipeline 为 运行 时如何增加版本号?

我试过添加

<AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>

到 .appxmanifest 文件,如下所述:How do I auto increment the package version number?,但这没有任何区别。

您可以使用 powershell 脚本更改 appxmanifest 文件中的版本值。请参阅以下示例:

在您的 yaml 管道中。您可以像下面这样设置变量:有关 counter 表达式的更多信息,请参见 here

variables:
  major: 1
  minor: 0
  build: $(Build.BuildId)
  version:  $[counter(variables['major'], 0)]  

然后将 powershell 任务添加到脚本下面的 运行 以更新版本值:

  - powershell: |
       [Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq")
       $path = "Msix/Package.appxmanifest"
       $doc = [System.Xml.Linq.XDocument]::Load($path)
       $xName =
         [System.Xml.Linq.XName]
           "{http://schemas.microsoft.com/appx/manifest/foundation/windows10}Identity"
       $doc.Root.Element($xName).Attribute("Version").Value =
         "$(major).$(minor).$(build).$(revision)";
       $doc.Save($path)
      displayName: 'Version Package Manifest'

请查看this document了解更多信息。

因为 appxmanifest 文件只是基于文本的 XML 文件。例如,您也可以使用扩展工具 Magic Chunks task to change version value in appxmanifest file . Check this thread