You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions中获取.NET MAUI应用的版本号

最优解决方案推荐

方案3:通过MSBuild变量在构建过程中生成版本文件(最直接高效)

.NET MAUI Windows项目构建时,会自动将Package.appxmanifest里<Identity>节点的Version值注入到MSBuild变量中,无需额外工具就能在构建流程里生成版本文件:

  1. 打开你的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:22:18