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

.NET MAUI不同平台版本号显示不一致问题咨询

.NET MAUI Windows与Android版本号显示差异问题

这不是Bug,是.NET MAUI跨平台设计中的预期行为差异。

差异原因

  • Android平台:AppInfo.VersionString直接返回项目文件中<ApplicationDisplayVersion>配置的值,也就是你设置的1.2.18,所以显示符合预期。
  • Windows平台:AppInfo.VersionString返回的是Windows应用包的内部版本号,对应项目文件里的<ApplicationVersion>配置项(默认格式为1.0.0.0)。你看到的1.2.12.1,正是当前项目中<ApplicationVersion>的配置值,而非<ApplicationDisplayVersion>。

这种差异源于两个平台对版本号的定位不同:Android优先对外展示用户可见的版本号,而Windows在AppInfo.VersionString中返回的是用于包发布、更新管理的内部版本标识。

统一版本显示的解决方案

如果需要让Windows平台也展示<ApplicationDisplayVersion>的内容,有两种可行方式:

  1. 同步版本配置:在项目文件中将<ApplicationVersion>的前三位与<ApplicationDisplayVersion>保持一致,例如设置为1.2.18.1,这样AppInfo.VersionString会返回1.2.18.1,核心版本号与预期一致。
  2. 直接读取显示版本:不依赖AppInfo.VersionString,通过MSBuild注入的方式直接获取<ApplicationDisplayVersion>的值。在项目文件中添加以下配置:
<ItemGroup>
  <Compile Include="Properties\VersionInfo.cs" />
</ItemGroup>
<Target Name="GenerateVersionInfo" BeforeTargets="CoreCompile">
  <WriteLinesToFile File="Properties\VersionInfo.cs" Overwrite="true" Lines="namespace YourAppNameSpace;
public static class VersionInfo {
    public const string DisplayVersion = &quot;$(ApplicationDisplayVersion)&quot;;
}" />
</Target>

之后在ViewModel中使用VersionInfo.DisplayVersion赋值,所有平台都会显示统一的1.2.18。

官方逻辑说明

.NET MAUI的版本配置遵循平台原生规则:Windows平台的包版本由<ApplicationVersion>控制,<ApplicationDisplayVersion>仅用于应用商店或应用内的展示文本;Android平台则直接将<ApplicationDisplayVersion>作为对外暴露的版本号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:11:14