使用Connectivity.NetworkAccess遇NotImplementedInReferenceAssemblyException报错求助
解决Xamarin.Essentials联网检查的NotImplemented异常问题
以下是针对该问题的具体排查和解决步骤:
- 统一NuGet包版本:确保主项目(共享/PCL项目)和Android项目安装的Xamarin.Essentials版本完全一致。版本不匹配会导致平台特定实现无法正确绑定,建议统一升级到最新稳定版。
- 清理缓存并重建:手动删除主项目和Android项目根目录下的
bin、obj文件夹,然后在Visual Studio中依次执行「清理解决方案」→「重建解决方案」。旧缓存的程序集经常会引发这类冲突。 - 确认Android项目的初始化代码:在Android项目的
MainActivity中,必须完成Xamarin.Essentials的初始化:protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // 初始化Xamarin.Essentials Xamarin.Essentials.Platform.Init(this, savedInstanceState); // 其他页面初始化代码 } // 必须重写此方法传递权限请求结果 public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Android.Content.PM.Permission[] grantResults) { Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); } - 检查程序集引用来源:右键主项目→「引用」,确认Xamarin.Essentials是通过NuGet安装的,而非手动添加的本地程序集。如果存在手动引用,删除后重新通过NuGet安装。
- 迁移到.NET Standard类库:如果主项目是PCL(可移植类库),建议迁移为.NET Standard类库,Xamarin.Essentials对.NET Standard的支持更完善,能减少这类兼容性问题。
- 排查项目冲突:新建一个空白Xamarin.Forms项目,仅安装Xamarin.Essentials并调用
Connectivity.NetworkAccess测试。如果新项目正常运行,说明原项目存在配置或代码冲突,可逐步迁移代码定位问题。
内容的提问来源于stack exchange,提问作者derprogrammierer
相关产品推荐
相关产品推荐

