Uwp 如何自动增加Azure管道中创建的.msixupload文件的包版本号?
我使用的是一个Azure管道,在我提交GitHub存储库时自动运行。.yml文件生成一个.msixupload文件(用于UWP)以上载到Microsoft应用商店。但是,我无法上载生成的.msixupload文件,因为.appxmanifest文件中的版本号从未更改,我正在尝试为现有应用程序生成更新。如何在每次运行Azure管道时增加版本号 我试着添加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
<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脚本来更改版本值或使用扩展名替换任务(魔术块)。我更新了上面的答案。这似乎有效。谢谢