如何在GitHub Actions中获取.NET MAUI应用的版本号
最优解决方案推荐
方案3:通过MSBuild变量在构建过程中生成版本文件(最直接高效)
.NET MAUI Windows项目构建时,会自动将Package.appxmanifest里<Identity>节点的Version值注入到MSBuild变量中,无需额外工具就能在构建流程里生成版本文件:
- 打开你的Windows项目(如
YourApp.Windows.csproj),添加以下后构建目标:
<Target Name="GenerateVersionFile" AfterTargets="Publish"> <WriteLinesToFile File="$(PublishDir)\version.txt" Lines="$(_PackageVersion)" Overwrite="true" /> </Target>
这里的_PackageVersion就是MSBuild从Package.appxmanifest提取的版本变量,和你用VersionTracking.Default.CurrentVersion获取的值完全一致。
2. 执行dotnet publish后,版本文件会自动生成在发布目录中,直接读取即可。
方案2:从已生成的MSIX文件中提取版本号(无需修改项目配置)
如果不想改动项目文件,可在GitHub Action中直接解析MSIX文件属性,完全不需要安装应用:
# 替换为你的MSIX实际路径 $msixPath = "./bin/Release/net8.0-windows10.0.19041.0/win10-x64/publish/MyApp.msix" $version = (Get-Item $msixPath).VersionInfo.ProductVersion echo $version > version.txt
MSIX文件的ProductVersion属性就是Package.appxmanifest中定义的版本号,跳过了证书安装的麻烦步骤。
方案1的不推荐理由
在GitHub Action runner上安装MSIX需要处理证书信任问题,步骤繁琐且容易因runner安全限制失败,完全没必要——前两种方法都能更直接地获取版本号,无需安装应用。
额外实用技巧
若要在GitHub Action后续步骤中复用版本号,可将其输出为环境变量:
$version = (Get-Item $msixPath).VersionInfo.ProductVersion echo "APP_VERSION=$version" >> $env:GITHUB_ENV
后续步骤中可通过${{ env.APP_VERSION }}直接引用该版本号。
内容的提问来源于stack exchange,提问作者jobrien9
相关产品推荐
相关产品推荐

