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

如何在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的共享项目中统一调用,避免重复代码,我们可以用依赖服务来封装:

  1. 在共享项目定义接口
public interface IVersionService
{
    string GetVersionName(); // 获取版本名称(如1.2.3)
    string GetBuildNumber(); // 获取构建号(如100)
}
  1. 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();
        }
    }
}
  1. 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();
        }
    }
}
  1. 在共享项目中调用
var versionService = DependencyService.Get<IVersionService>();
var appVersionInfo = $"当前版本:{versionService.GetVersionName()} | 构建号:{versionService.GetBuildNumber()}";
// 把appVersionInfo绑定到信息页面的Label或其他UI控件即可

小提示:这些版本信息都是从你在各平台项目的配置文件里读取的——Android对应AndroidManifest.xml,iOS对应Info.plist,所以打包前只要确保这些配置里的版本号和构建号是最新的,就能自动获取到正确的信息啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:50:34