4

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

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

我的想法是,将它与构建过程很好地集成在一起会很好,类似于 gitversion,但我无法找到任何关于我在构建或创建应用程序包过程中的选项的文档。

也许在构建过程中有一些转换步骤,我不知道可以对.appxmanifest? 或者也许有一种方法可以让版本始终反映被捆绑的可执行文件的版本?

MSDN论坛问题

4

2 回答 2

4

您应该.appxmanifest在创建包之前修改构建管道中的文件。毕竟,它只是一个基于文本的 XML 文件。

如果您使用的是 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 应用程序的完整示例。

于 2019-07-19T13:19:52.007 回答
1

您必须在打包前更新清单。查看这个示例,包括一个 powershell 脚本,以使用提供的 gitversion 戳 xml。https://github.com/microsoft/devops-for-windows-apps/blob/master/azure-pipelines.yml#L72

于 2019-07-19T07:51:15.770 回答