我正在将桌面桥用于WPF桌面应用程序,并希望在构建过程中自动创建msix软件包。我不想在源代码管理中存储任何版本信息。
解决方案中的WPF项目在每次构建完成后都使用gitversion msbuild任务自动为我的可执行文件推断版本。
不幸的是,我不确定.appxmanifest
是否存在任何类似的机制。
我的想法是,与gitversion很好地集成到构建过程中会很好,但是我无法找到有关构建或 Create App期间我的选择的任何文档打包过程。
也许在构建过程中有一些转换步骤我不知道可以对.appxmanifest
进行吗?或者也许有一种方法可以使版本始终反映捆绑的可执行文件的版本?
答案 0 :(得分:1)
包装前必须先更新清单。查看此示例,其中包括一个Powershell脚本,可使用提供的gitversion戳XML。 https://github.com/microsoft/devops-for-windows-apps/blob/master/azure-pipelines.yml#L72
答案 1 :(得分:1)
在创建软件包之前,您应该修改构建管道中的.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.
请参考this MSDN Magazine article,以获取更多信息以及如何使用Azure Pipelines设置侧载MSIX打包WPF应用程序的持续集成(CI),持续部署(CD)和自动更新的完整示例。