如何在 appxmanifest 中自动提供版本?

问题描述 投票:0回答:3

我正在将桌面桥用于 WPF 桌面应用程序,并希望在构建过程中自动创建 msix 包。我不想在源代码管理中存储任何版本信息。

解决方案中的 WPF 项目使用 gitversion msbuild 任务在每次构建完成时自动推断可执行文件的版本。 不幸的是,我不确定

.appxmanifest是否存在类似的机制。

我的想法是,如果能将其与构建过程完美集成(类似于 gitversion),那就太好了,但我无法找到任何有关构建或“创建应用程序包”过程中的选项的文档。 

也许在构建过程中有一些我不知道可以对

.appxmanifest完成的转换步骤?或者也许有一种方法可以让版本始终反映捆绑的可执行文件的版本?

MSDN 论坛问题

您应该在创建包之前修改构建管道中的 .appxmanifest

文件。毕竟,它只是一个基于文本的 XML 文件。
wpf msbuild continuous-integration desktop-bridge appxmanifest
3个回答
6
投票
如果您使用的是 Azure Pipelines,则可以使用 Powershell 任务和计数器变量来完成此操作,该变量会针对每个构建递增:

    pool: 
      vmImage: vs2017-win2016
    variables:
      buildPlatform: 'x86'
      buildConfiguration: 'release'
      major: 1
      minor: 0
      build: 0
      revision: $[counter('rev', 0)]
    steps:
    - 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'
    +Build, Package and Sign.

请参阅

这篇 MSDN 杂志文章

,了解有关如何使用 Azure Pipelines 设置持续集成 (CI)、持续部署 (CD) 和自动更新侧载 MSIX 打包 WPF 应用程序的完整示例。
    

打包前必须更新清单。查看此示例,其中包含一个 powershell 脚本,用于使用提供的 gitversion 来查看 xml。 https://github.com/microsoft/devops-for-windows-apps/blob/master/azure-pipelines.yml#L72


2
投票

这也是 Github 工作流程的示例,我已经预先在 vars.VERSION

中的存储库变量中设置了新版本。

0
投票
- name: Update Version in manifest working-directory: './pathToFile/eg/Windows' run: | $xmlFilePath = "Package.appxmanifest" [xml]$xml = Get-Content $xmlFilePath $newVersion = "${{ vars.VERSION }}" $xml.Package.Identity.Version = $newVersion $xml.Save($xmlFilePath) Write-Output "Version updated to $newVersion in $xmlFilePath"

	

© www.soinside.com 2019 - 2024. All rights reserved.