我正在尝试在MonoMac程序中使用SQLite数据库(目的是在MonoTouch应用程序中重用数据库)。
我尝试了两种不同的ORM,但都失败了同样的问题。在网上搜索,我发现了MONO_LOG_LEVEL=debug
标志和很多信息,但是我无法让它发挥作用。
目前,我正在引用Mono.Data.SQLite,但从我发现的情况来看,这似乎只是系统特定版本的包装。
这是错误输出:
Mono:加载程序集System.Data v2.0.0.0的请求已重新映射到v4.0.0.0 单声道:程序集加载器探测位置:'/ Library / Frame /Mono.framework / Version / 10.10.9 / lib / mono /gac / System.Data / 4.0.0.0 <_ em> b77a5c561934e089 / System.Data.dll'。 单声道:图像addref System.Data [0x62ada0] - &gt; /Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/gac/System.Data/4.0.0.0_b77a5c561934e089/System.Data.dll[0xbd5600]:2 单声道:程序集System.Data [0x62ada0]添加到域SQLTest.exe,ref_count = 1 单声道: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):找不到图像
单声道:程序集加载程序从位置加载程序集:'/ Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/gac/System.Data/4.0.0.0_b77a5c561934e089/System.Data .dll文件”。 单声道:配置尝试解析:'/ Library / Frame /Mono.framework / Version / 10.10.9 / lib / mono / gac / System.Data / 4.0.0.0 _b77a5c561934e089 / System.Data.dll.config' 。 单声道:配置尝试解析:'/ Library / Frame /Mono.framework / Version / 10.10.9 / etc / mono / assembly / System.Data / System.Data.config'。 单声道:Assembly Ref addref Catnap [0x6213c0] - &gt; System.Data [0x62ada0]:2 单声道:程序集参考addref System.Data [0x62ada0] - &gt; mscorlib [0x1001d90]:6 单声道:程序集加载器探测位置:'/ Library / Frame /Mono.framework / Version / 10.10.9 / lib / System.Data.SQLite.dll'。 单声道:程序集加载器探测位置:'/ Library / Frame /Mono.framework / Version / 10.10.9 / lib / System.Data.SQLite.exe'。
未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“System.Data.SQLite”或其依赖项之一。该系统找不到指定的文件。 文件名:'System.Data.SQLite' 在System.AppDomain.Load(System.String assemblyString,System.Security.Policy.Evidence assemblySecurity,Boolean refonly)[0x00000] in:0 在System.AppDomain.Load(System.String assemblyString)[0x00000] in:0 at(wrapper remoting-invoke-with-check)System.AppDomain:Load(string) 在System.Reflection.Assembly.Load(System.String assemblyString)[0x00000] in:0 at Catnap.Database.BaseDbAdapter.ResolveConnectionType(System.String connectionTypeAssemblyName)[0x00000] in:0 在Catnap.Database.Sqlite.BaseSqliteAdapter..ctor(System.String connectionTypeAssemblyName)[0x00000] in:0 在Catnap.Database.Sqlite.SqliteAdapter..ctor()[0x00000]中:0 在Catnap.DbAdapter.get_Sqlite()[0x00000]中:0 在YAData.Connection.Connect()[0x00000]中:0 在SQLTest.MainClass.Main(System.String [] args)[0x00000] in:0
我尝试使用
添加配置文件<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。
请帮忙吗?
答案 0 :(得分:0)
我仍然不知道为什么它正在寻找System.Data.SQLite,但是我自己重新编译了一个ORM而不是使用提供的dll,并且它有效。我确定一些问题是我在MonoMac项目中使用MonoTouch dll。重新编译CoolStorage(使用Mono.Data.Sqlite
而不是System.Data.SQLite
)解决了它。
如果有人可以给我一个解释,我会切换接受的答案。
使用代码!