Android MAUI应用发布后获取程序集版本遇FileNotFoundException的解决办法
在Android MAUI发布版中获取应用版本的解决方案
问题根源
调试阶段,MAUI应用的程序集以独立DLL文件形式存在,assembly.Location能正确定位到DLL路径;但发布APK时,Android会将程序集打包进APK内部的优化文件(如.dex),原DLL路径不再有效,导致FileVersionInfo.GetVersionInfo触发文件找不到异常。
最优跨平台方案
使用MAUI内置的跨平台应用信息API,无需依赖程序集文件路径,适配所有平台(包括发布版Android):
using Microsoft.Maui.ApplicationModel; string appVersion = AppInfo.Current.VersionString;
程序集版本获取方案(若需)
如果需要获取程序集本身的版本信息,可直接读取程序集属性,避开文件IO操作:
using System.Reflection; // 获取程序集的InformationalVersion(通常包含版本+构建信息) Assembly executingAssembly = Assembly.GetExecutingAssembly(); var infoVersionAttr = executingAssembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>(); string assemblyInfoVersion = infoVersionAttr?.InformationalVersion ?? "Unknown"; // 或者获取程序集的正式版本号 Version assemblyVersion = executingAssembly.GetName().Version; string assemblyVersionStr = assemblyVersion?.ToString() ?? "Unknown";
补充说明
AppInfo.Current.VersionString读取的是项目文件(.csproj)中Version节点配置的值,与应用商店展示的版本一致。- 直接读取程序集属性的方式完全在内存中操作,不会受发布打包方式影响,稳定性更高。
内容的提问来源于stack exchange,提问作者Álvaro García
相关产品推荐
相关产品推荐

