Xamarin Android编译报错:Zza类型所在Xamarin.GooglePlayServices.Basement未引用
Xamarin Android编译CS0012报错解决方案
这个报错属于程序集绑定版本不匹配问题,项目中实际引用的是42.1021.1版本的Xamarin.GooglePlayServices.Basement,但存在其他依赖包要求加载签名为1.0.0.0版本的对应程序集,导致编译时识别失败。你可以按以下顺序排查解决:
- 统一所有Google Play服务相关NuGet包版本:检查项目中所有Xamarin.GooglePlayServices前缀的NuGet包(包括Ads、Maps、Fitness、GCM等子包),确保所有包版本完全一致,均为42.1021.1,任意子包版本不一致都会触发旧版本依赖拉取。
- 清理项目缓存与残留文件:关闭Visual Studio 2019,依次删除解决方案根目录的
.vs隐藏文件夹、Android项目目录下的bin、obj文件夹,再删除解决方案级packages目录下的Xamarin.GooglePlayServices.Basement.42.1021.1文件夹,重启VS后重新还原NuGet包再编译。 - 手动添加程序集绑定重定向:打开Android项目的
App.config文件(无该文件则手动新建),在<runtime>节点下添加如下配置,强制所有低版本请求跳转到实际引用的版本:
<dependentAssembly> <assemblyIdentity name="Xamarin.GooglePlayServices.Basement" publicKeyToken="71f3e3261ac778b5" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-42.1021.1" newVersion="42.1021.1" /> </dependentAssembly>
- 校验目标框架版本:确认你的Xamarin Android项目的目标Android版本≥7.0,和引用的Basement包对应的MonoAndroid70编译目标匹配,避免框架兼容问题。
该问题属于Xamarin.GooglePlayServices绑定包的常见编译问题,90%以上的场景都是NuGet版本不统一或本地缓存残留导致,按上述步骤操作即可解决。
内容的提问来源于stack exchange,提问作者larryc19
相关产品推荐
相关产品推荐

