Xamarin.Forms iOS应用版本与构建号显示异常求助
解决Xamarin.Forms iOS端版本号显示异常的问题
我来帮你排查这个iOS版本显示不符的问题,结合你的代码和配置来看,大概率是以下几个常见原因导致的,咱们一步步来解决:
1. 确认Info.plist的配置是否真正生效
有时候手动编辑plist文件或者通过项目属性修改时,可能会因为配置优先级、缓存等问题,实际编译用的不是你修改的版本:
- 右键你的iOS项目 → 属性 → iOS应用程序,在这里确认“版本”(对应
CFBundleShortVersionString)和“内部版本号”(对应CFBundleVersion)是不是你设置的0.0和9,不要只看plist的源码文件。 - 清理项目缓存:删除iOS项目下的
bin和obj文件夹,重启Visual Studio后重新编译部署。 - 检查是否存在多环境plist:如果你的项目针对Debug/Release等不同配置有自定义的Info.plist,要确保你修改的是当前编译配置对应的文件。
2. 清空设备/模拟器上的App缓存
iOS的模拟器或真机可能会缓存旧版本的App信息,导致读取的还是之前的旧版本号:
- 模拟器:长按App图标删除,然后在IDE中选择清理解决方案,再重新部署。
- 真机:卸载App,重启手机后再重新安装新版本。
- 你也可以通过Xcode的Organizer查看已安装App的版本信息,确认是否是新设置的版本号。
3. 检查代码中是否有版本号覆盖逻辑
全局搜索你的项目中的AppVersion和AppBuild,看看有没有其他地方对这两个变量进行了赋值,比如在App初始化的其他代码里,会不会不小心把它们重置成了旧的1.5.174和674。
4. 验证plist文件的键名正确性
虽然你的代码里用的是正确的键名,但可以再确认下Info.plist的源码里这两个键的拼写:
<key>CFBundleShortVersionString</key> <string>0.0</string> <key>CFBundleVersion</key> <string>9</string>
确保没有拼写错误(比如大小写、字母遗漏),格式也符合XML规范。
调试排查:输出读取的原始值
可以在你的Version_iOS实现里加日志,看看实际读取到的是什么值:
public string GetVersion() { var version = NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleShortVersionString")?.ToString(); Console.WriteLine($"读取到的版本号: {version}"); return version; } public int GetBuild() { var buildStr = NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleVersion")?.ToString(); Console.WriteLine($"读取到的构建号: {buildStr}"); return int.Parse(buildStr); }
查看控制台输出,就能确定是读取的问题还是配置没有生效的问题。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

