Realm 10.6.0运行报错No RealmObjects. Has linker stripped them?如何解决
Realm 3.4.0升级到10.6.0初始化报错排查方案
- 检查Fody配置与版本匹配
首先确认项目根目录的FodyWeavers.xml配置正确,完整格式如下:
同时检查NuGet包的版本匹配:Realm 10.6.0需要配套使用6.0及以上版本的Fody、Realm.Fody,不要单独升级Realm包,需同步更新Fody相关依赖。<?xml version="1.0" encoding="utf-8" ?> <Weavers> <Realm /> </Weavers> - 修正RealmObject类定义
10.x版本强制要求所有RealmObject子类必须标记为partial,才能让Fody正常织入持久化逻辑,示例如下:
此外所有需要持久化的属性必须使用自动属性实现,不要自定义get/set逻辑,不需要持久化的属性需要标记// 错误写法 public class RealmContact : RealmObject // 正确写法 public partial class RealmContact : RealmObject[Ignored]特性。 - 手动指定Schema绕过自动扫描
可以在初始化RealmConfiguration时显式传入所有RealmObject类,验证是否为自动扫描失效问题:
如果手动指定后可以正常初始化,说明问题出在Fody自动织入环节,重点排查前两项配置。config = new RealmConfiguration(dbPath) { Schema = new[] { typeof(RealmContact) /* 此处补充所有其他RealmObject子类 */ } }; realm = Realm.GetInstance(config); - 关闭生成优化与混淆裁剪
检查项目生成属性,关闭「优化代码」选项;如果使用了混淆工具,需要将所有RealmObject子类、Realm相关程序集排除在混淆、裁剪范围外;同时将平台目标明确设置为x86或x64,不要使用Any CPU。 - 清理编译缓存
手动删除项目的bin、obj文件夹,重启Visual Studio后重新生成整个解决方案,清除旧版本Realm遗留的织入缓存。 - 类库项目特殊处理
如果RealmObject定义在单独的类库项目中,该类库项目也必须安装Realm、Realm.Fody包,且添加对应的FodyWeavers.xml配置文件,否则类库中的模型不会被Fody处理。
内容的提问来源于stack exchange,提问作者Katerina
相关产品推荐
相关产品推荐

