调用Xamarin.Essentials.Preferences抛NotImplementedInReferenceAssemblyException如何解决
问题原因
出现该报错的核心是Xamarin.Essentials的平台特定实现没有被正确加载,常见触发原因有3个:
- 解决方案内各项目安装的Xamarin.Essentials NuGet包版本不一致,导致共享项目调用了无实现的可移植版本库
- 桌面端(WPF)项目没有手动初始化Xamarin.Essentials,不同于Android/iOS平台会自动初始化,WPF等桌面平台需要手动加初始化代码
- WPF项目的目标框架版本过低,不匹配当前安装的Xamarin.Essentials版本的最低要求
解决步骤
统一NuGet包版本
右键解决方案选择「管理解决方案的NuGet包」,切换到「已安装」标签找到Xamarin.Essentials,勾选所有项目后统一升级到最新稳定版,保证所有项目的包版本完全一致。新增WPF平台初始化代码
打开WPF项目的App.xaml.cs文件,在OnStartup方法中添加初始化逻辑:
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); // 新增这一行初始化Xamarin.Essentials Xamarin.Essentials.Platform.Init(this, e); }
- 确认WPF项目框架版本
右键WPF项目打开属性页,确认目标框架版本不低于.NET Framework 4.6.1,若版本过低先升级框架版本再重试。
如果以上操作完成后依然报错,建议直接改用桌面平台原生的配置存储方案:比如直接读写本地JSON文件存储配置,或者使用System.Configuration类库操作App.config配置项,稳定性更高,更适配桌面托盘应用的场景。
内容的提问来源于stack exchange,提问作者Nicolai
相关产品推荐
相关产品推荐

