如何在Xamarin.Forms应用中获取项目构建版本信息?
在Xamarin.Forms中自动获取构建版本信息的方法
当然有更省心的方式自动获取构建版本信息啦!不用每次手动硬编码更新,我们可以借助Xamarin.Forms的跨平台特性,直接读取各平台原生配置里的版本数据,下面给你一步步拆解:
分平台原生获取方式
如果你只需要在特定平台项目中直接获取,可以用以下代码:
Android平台
在Android项目里,通过PackageManager读取AndroidManifest.xml中的版本配置:
var packageInfo = Application.Context.PackageManager.GetPackageInfo(Application.Context.PackageName, 0); var versionName = packageInfo.VersionName; // 比如 "1.2.3" var versionCode = packageInfo.VersionCode; // 构建号(整数类型,如100)
iOS平台
iOS项目中,直接读取Info.plist里的版本信息:
var version = NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleShortVersionString").ToString(); // 版本名称 var buildNumber = NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleVersion").ToString(); // 构建号
封装成共享代码(推荐)
为了在Xamarin.Forms的共享项目中统一调用,避免重复代码,我们可以用依赖服务来封装:
- 在共享项目定义接口
public interface IVersionService { string GetVersionName(); // 获取版本名称(如1.2.3) string GetBuildNumber(); // 获取构建号(如100) }
- Android平台实现接口
[assembly: Dependency(typeof(VersionServiceAndroid))] namespace YourAppNamespace.Droid { public class VersionServiceAndroid : IVersionService { public string GetVersionName() { var packageInfo = Application.Context.PackageManager.GetPackageInfo(Application.Context.PackageName, 0); return packageInfo.VersionName; } public string GetBuildNumber() { var packageInfo = Application.Context.PackageManager.GetPackageInfo(Application.Context.PackageName, 0); return packageInfo.VersionCode.ToString(); } } }
- iOS平台实现接口
[assembly: Dependency(typeof(VersionServiceiOS))] namespace YourAppNamespace.iOS { public class VersionServiceiOS : IVersionService { public string GetVersionName() { return NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleShortVersionString").ToString(); } public string GetBuildNumber() { return NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleVersion").ToString(); } } }
- 在共享项目中调用
var versionService = DependencyService.Get<IVersionService>(); var appVersionInfo = $"当前版本:{versionService.GetVersionName()} | 构建号:{versionService.GetBuildNumber()}"; // 把appVersionInfo绑定到信息页面的Label或其他UI控件即可
小提示:这些版本信息都是从你在各平台项目的配置文件里读取的——Android对应AndroidManifest.xml,iOS对应Info.plist,所以打包前只要确保这些配置里的版本号和构建号是最新的,就能自动获取到正确的信息啦!
内容的提问来源于stack exchange,提问作者Alan2
相关产品推荐
相关产品推荐

