.NET MAUI如何通过命令行生成Appx文件夹以打包MSIX(Azure DevOps场景)
.NET MAUI Windows平台命令行生成Appx文件夹及自动化打包方案
不需要依赖Azure DevOps第三方MSIX扩展,直接使用.NET SDK原生的publish命令即可生成和Visual Studio部署时完全一致的松散Appx文件夹,后续再配合Windows SDK工具完成MSIX打包和签名即可实现全自动化流程。
具体实现步骤
- 第一步:执行dotnet publish命令生成Appx文件夹
对应命令如下,可根据实际项目的框架版本、架构调整参数:dotnet publish <你的项目.csproj> -f net6.0-windows10.0.19041.0 -c Release -p:Platform=x64 -p:WindowsAppSDKSelfContained=true -p:CreateAppxPackage=false -p:OutputPath=./ci-build
执行完成后,Appx文件夹会生成在./ci-build/Release/net6.0-windows10.0.19041.0/win10-x64/Appx路径下,包含所有资源、依赖DLL和自动生成的AppxManifest.xml文件。 - 第二步:调用MakeAppx工具打包为MSIX文件
Azure DevOps的Windows托管代理默认已预装对应版本的Windows SDK,直接调用即可:"C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\MakeAppx.exe" pack /d ./ci-build/Release/net6.0-windows10.0.19041.0/win10-x64/Appx /p ./output/应用名称.msix - 第三步:调用Signtool完成MSIX签名
签名用的证书PFX文件和密码建议存储在Azure DevOps的安全变量/安全文件中,避免硬编码泄露:"C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\SignTool.exe" sign /f 你的证书.pfx /p $(证书密码变量) /fd SHA256 ./output/应用名称.msix
注意事项
- 命令中的目标框架版本(
net6.0-windows10.0.19041.0)需和项目csproj中配置的Windows目标版本保持一致,使用.NET 7/8的项目对应修改为net7.0-windows、net8.0-windows即可 - Platform参数必须指定为x64/x86/ARM64中的一个,不要使用AnyCPU,MAUI Windows打包不支持AnyCPU架构
- 如果需要生成多架构的MSIX包,可分别执行不同架构的publish命令,再用MakeAppx生成对应架构的安装包
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

