VS2022中#if IOS编译指令失效问题求助
编译指令异常的排查方案
你的注册Firebase服务的C#代码如下:
private static MauiAppBuilder RegisterFirebaseServices(this MauiAppBuilder builder) { builder.ConfigureLifecycleEvents(events => { #if IOS events.AddiOS(iOS => iOS.FinishedLaunching((app, launchOptions) => { CrossFirebase.Initialize(app, launchOptions); return false; })); #else events.AddAndroid(android => android.OnCreate((activity, state) => CrossFirebase.Initialize(activity, state))); #endif }); builder.Services.AddSingleton(_ => CrossFirebaseAuth.Current); return builder; }
选中Android-Pixel 5运行目标时,#if IOS代码段激活、Android代码置灰,这是VS的平台上下文识别或编译符号配置出了问题,可按以下步骤排查:
检查条件编译符号配置
右键MAUI项目 → 属性 → 切换到「生成」标签页,顶部平台下拉框选Android,查看「条件编译符号」输入框:- 确保没有
IOS符号(误加会导致iOS代码被激活) - 确认存在
ANDROID符号(这是Android平台默认的编译符号)
若有错误配置,修改后保存即可。
- 确保没有
清理项目缓存并重启VS
VS的项目上下文缓存可能出现异常,导致平台识别错误:- 点击顶部菜单「生成」→「清理解决方案」
- 手动删除项目根目录下的
bin和obj文件夹 - 关闭并重新打开VS,重新加载项目后再选择Android目标
重新确认目标平台选择
有时工具栏的目标选择会出现显示与实际不同步:- 点击工具栏目标下拉菜单,重新选择「Android-Pixel 5」
- 等待项目重新加载完成,查看状态栏的平台标识是否为Android,确认上下文切换正确
内容的提问来源于stack exchange,提问作者Gratzy
相关产品推荐
相关产品推荐

