.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>的内容,有两种可行方式:
- 同步版本配置:在项目文件中将
<ApplicationVersion>的前三位与<ApplicationDisplayVersion>保持一致,例如设置为1.2.18.1,这样AppInfo.VersionString会返回1.2.18.1,核心版本号与预期一致。 - 直接读取显示版本:不依赖
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 = "$(ApplicationDisplayVersion)"; }" /> </Target>
之后在ViewModel中使用VersionInfo.DisplayVersion赋值,所有平台都会显示统一的1.2.18。
官方逻辑说明
.NET MAUI的版本配置遵循平台原生规则:Windows平台的包版本由<ApplicationVersion>控制,<ApplicationDisplayVersion>仅用于应用商店或应用内的展示文本;Android平台则直接将<ApplicationDisplayVersion>作为对外暴露的版本号。
内容的提问来源于stack exchange,提问作者bdcoder
相关产品推荐
相关产品推荐

