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

MSBuild构建时AndroidVersionCode参数被忽略,如何正确配置?

解决MSBuild设置AndroidVersionCode不生效的问题

问题描述

根据官方文档,可将-p:AndroidVersionCode=101作为MSBuild参数设置版本号,但实际构建后APK始终使用AndroidManifest.xml中的硬编码值,即使已在Droid项目的csproj中设置<GenerateApplicationManifest>true</GenerateApplicationManifest>。使用的完整MSBuild命令如下:

msbuild -t:Clean -t:PackageForAndroid -p:AndroidPackageFormat=apk -p:ApplicationVersion="1.0" -p:AndroidVersionCode=101 -p:ApplicationId="cz.sebastian.myapp" -p:OutputPath="C:\Packages\" -p:Configuration=Release .\MyApp.Droid.csproj

解决步骤

  • 移除AndroidManifest.xml中的硬编码versionCode
    如果你的AndroidManifest.xml里写了<manifest android:versionCode="xxx">,这个值会强制覆盖MSBuild参数,必须删掉该属性,让MSBuild自动生成清单时注入版本号。

  • 确认csproj配置正确
    确保<GenerateApplicationManifest>True</GenerateApplicationManifest>仅在Droid项目的csproj中配置(netstandard项目不需要这个设置),可以在对应配置节点下添加默认版本号,命令行参数会自动覆盖它:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
      <GenerateApplicationManifest>True</GenerateApplicationManifest>
      <AndroidVersionCode>100</AndroidVersionCode> <!-- 默认值,可被命令行覆盖 -->
    </PropertyGroup>
    
  • 优化MSBuild命令
    合并Clean和PackageForAndroid目标,避免重复执行:

    msbuild -t:Clean,PackageForAndroid -p:AndroidPackageFormat=apk -p:ApplicationVersion="1.0" -p:AndroidVersionCode=101 -p:ApplicationId="cz.sebastian.myapp" -p:OutputPath="C:\Packages\" -p:Configuration=Release .\MyApp.Droid.csproj
    
  • 验证结果
    构建完成后,用aapt工具验证APK的版本号:

    aapt dump badging C:\Packages\MyApp.Droid.apk | findstr versionCode
    

    输出应显示versionCode='101',说明设置生效。

额外排查

如果还是不生效,检查是否有Directory.Build.props或其他全局构建脚本覆盖了AndroidVersionCode的值,这类脚本的优先级可能高于命令行参数。

内容的提问来源于stack exchange,提问作者Sebastian Busek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:05:17