向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
相关产品推荐
相关产品推荐

