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

向Xamarin.Forms添加Firebase Ads遇Windows专属编译错误:名称不能以$开头

嘿,这个Windows下Xamarin.Forms集成Firebase Ads的坑我刚好踩过!先帮你把问题理清楚:

问题详情
  • 仅Windows环境会触发这个问题,Mac上完全正常运行
  • 当向Xamarin.Forms项目中添加Firebase Ads相关组件后,编译时会弹出错误:'名称不能以'$'字符开头,十六进制值0x24'
  • 虽然Visual Studio把它标记为警告,但实际上会直接终止编译,你提供的编译日志片段也印证了这一点:

1>DccClassCancelations.Android -> D:\dev\DccClassCancelationsLite\DccClassCancelations\DccClassCancelations\DccClassCancelations.Android\bin\Debug\DccClassCancelations.Android.dll
1>No way to resolve conflict between "mscorlib, V...

实测有效的解决方案

我当时试了几个方法,最终解决了问题,你可以按顺序试试:

1. 彻底清理项目后重建

Windows下VS的自动清理有时候会残留缓存文件,导致编译异常:

  • 右键解决方案,选择清理解决方案
  • 手动删除每个项目(尤其是Android项目)下的bin和obj文件夹
  • 右键解决方案,选择重建解决方案

2. 调整Firebase Ads NuGet包版本

这个问题很大概率是NuGet包版本兼容性导致的:

  • 卸载当前项目中的Firebase Ads相关NuGet包(比如Xamarin.Firebase.Ads、Xamarin.Firebase.Common等)
  • 安装稳定的旧版本,比如90.x系列的版本(尽量避免刚发布的最新版或预览版)
  • 确保Xamarin.Forms的版本和Firebase包版本匹配,比如Forms 5.x对应兼容的Firebase版本

3. 修改Android项目的MSBuild配置

Windows下的MSBuild对资源生成的处理比较严格,试试关闭托管设计时资源生成器:

  • 右键Android项目,选择编辑项目文件(打开.csproj文件)
  • 在<PropertyGroup>节点中添加以下配置:
<AndroidUseManagedDesignTimeResourceGenerator>False</AndroidUseManagedDesignTimeResourceGenerator>
  • 保存文件后重新编译

4. 检查资源文件中的特殊字符

虽然错误提示是$开头的名称,但也有可能是资源文件里混入了违规字符:

  • 检查Android项目res文件夹下的所有XML文件(比如strings.xml、布局文件、样式文件等)
  • 确保所有资源名称都是以字母开头,没有$、空格、特殊符号等不符合Android规范的内容
  • 如果是第三方库引入的资源有问题,可以尝试替换那个库的版本

内容的提问来源于stack exchange,提问作者Jacob Williams-Ernst

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:54:53