1

我正在尝试在 MonoMac 程序中使用 SQLite 数据库(目的是在 MonoTouch 应用程序中重用数据库)。

我尝试了两种不同的 ORM,但都因同样的问题而失败。在网上搜索,我发现了这个MONO_LOG_LEVEL=debug标志,还有很多信息,但我不能完全让它工作。

目前,我正在引用 Mono.Data.SQLite,但从我发现的情况来看,这似乎只是系统特定版本的包装器。

这是错误输出:

Mono:加载程序集 System.Data v2.0.0.0 的请求已重新映射到 v4.0.0.0 Mono:程序集加载器探测位置:'/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono /gac/System.Data/4.0.0.0_b77a5c561934e089/System.Data.dll '。单声道:图像地址引用 System.Data[0x62ada0] -> /Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/gac/System.Data/4.0.0.0 _b77a5c561934e089/System.Data.dll[0xbd5600] :2 Mono:Assembly System.Data[0x62ada0] 添加到域 SQLTest.exe,ref_count=1 Mono:AOT 无法加载 AOT 模块 /Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/gac/ System.Data/4.0.0.0_b77a5c561934e089/System.Data.dll.dylib : dlopen(/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/gac/System.Data/4.0.0.0_b77a5c561934e089/System.Data.dll.dylib, 9): 找不到图像

Mono:程序集加载器从以下位置加载程序集:'/ Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/gac/System.Data/ 4.0.0.0_b77a5c561934e089/System.Data.dll'。Mono:配置尝试解析:'/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/gac/System.Data/4.0.0.0_b77a5c561934e089/System.Data.dll.config'。Mono:配置尝试解析:'/Library/Frameworks/Mono.framework/Versions/2.10.9/etc/mono/assemblies/System.Data/System.Data.config'。Mono:Assembly Ref addref Catnap[0x6213c0] -> System.Data[0x62ada0]:2 Mono:Assembly Ref addref System.Data[0x62ada0] -> mscorlib[0x1001d90]:6 Mono:Assembly Loader 探测位置:'/Library/Frameworks /Mono.framework/Versions/2.10.9/lib/System.Data.SQLite.dll'。Mono:Assembly Loader 探测位置:'/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/System.Data.SQLite.exe'。

未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“System.Data.SQLite”或其依赖项之一。该系统找不到指定的文件。文件名:System.AppDomain.Load (System.String assemblyString, System.Security.Policy.Evidence assemblySecurity, Boolean refonly) [0x00000] 中的“System.Data.SQLite”在 System.AppDomain.Load (System.String assemblyString) [0x00000] in :0 at (wrapper remoting-invoke-with-check) System.AppDomain:Load (string) at System.Reflection.Assembly.Load (System.String assemblyString) [0x00000] in :0 at Catnap。 Database.BaseDbAdapter.ResolveConnectionType (System.String connectionTypeAssemblyName) [0x00000] in :0 at Catnap.Database.Sqlite.BaseSqliteAdapter..ctor (System.String connectionTypeAssemblyName) [0x00000] in :0 at Catnap。

我试过添加一个配置文件

<configuration>
   <dllmap dll="sqlite3" target="/usr/local/lib/libsqlite3.0.dylib" os="!windows"/>
</configuration>

到应用程序,我已经尝试修改/Library/Frameworks/Mono.framework/Versions/2.10.9/etc/mono/config,但没有任何效果。它仍然在错误的地方寻找并且没有找到 SQLite。

请帮忙?

4

1 回答 1

0

我仍然不知道它为什么要寻找 System.Data.SQLite,但我自己重新编译了其中一个 ORM,而不是使用提供的 dll,它确实有效。我确信其中一些问题是我在 MonoMac 项目中使用了 MonoTouch dll。重新编译 CoolStorage(使用Mono.Data.Sqlite代替System.Data.SQLite)解决了它。

如果有人可以给我一个解释,我会切换接受的答案。

上代码!

于 2012-10-12T03:58:32.040 回答