我正在将桌面桥用于 WPF 桌面应用程序,并希望在构建过程中自动创建 msix 包。我不想在源代码管理中存储任何版本信息。
解决方案中的 WPF 项目使用 gitversion msbuild 任务在每次构建完成时自动推断可执行文件的版本。 不幸的是,我不确定.appxmanifest
是否存在类似的机制。
我的想法是,如果能将其与构建过程完美集成(类似于 gitversion),那就太好了,但我无法找到任何有关构建或“创建应用程序包”过程中的选项的文档。也许在构建过程中有一些我不知道可以对
.appxmanifest
完成的转换步骤?或者也许有一种方法可以让版本始终反映捆绑的可执行文件的版本?
MSDN 论坛问题
)
您应该在创建包之前修改构建管道中的 .appxmanifest
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
这也是 Github 工作流程的示例,我已经预先在 vars.VERSION
- 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"