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

Uwp 如何自动增加Azure管道中创建的.msixupload文件的包版本号?,uwp,azure-pipelines,versioning,msix,appxmanifest,Uwp,Azure Pipelines,Versioning,Msix,Appxmanifest,我使用的是一个Azure管道,在我提交GitHub存储库时自动运行。.yml文件生成一个.msixupload文件(用于UWP)以上载到Microsoft应用商店。但是,我无法上载生成的.msixupload文件,因为.appxmanifest文件中的版本号从未更改,我正在尝试为现有应用程序生成更新。如何在每次运行Azure管道时增加版本号 我试着添加 <AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackag

我使用的是一个Azure管道,在我提交GitHub存储库时自动运行。.yml文件生成一个.msixupload文件(用于UWP)以上载到Microsoft应用商店。但是,我无法上载生成的.msixupload文件,因为.appxmanifest文件中的版本号从未更改,我正在尝试为现有应用程序生成更新。如何在每次运行Azure管道时增加版本号

我试着添加

<AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>

,但这没有任何区别。

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

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

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'
请查看更多信息


因为appxmanifest文件只是基于文本的XML文件。您还可以使用扩展工具更改appxmanifest文件中的版本值。例如,检查。

这似乎无效。在实现程序集信息任务后,生成的.msixupload文件的名称仍然反映应用程序清单中的版本号,该版本号没有更改。尝试将.msixupload文件上载到Microsoft应用商店时,将显示以下错误:“您提供了两个具有不同内容的全名的软件包。请删除其中一个软件包,或增加当前软件包版本以继续。”仅更改文件名也不起作用。@user2052677您可以编写powershell脚本来更改版本值或使用扩展名替换任务(魔术块)。我更新了上面的答案。这似乎有效。谢谢