在MonoMac项目中找不到System.Data.SQLite

时间:2012-10-10 05:59:08

标签: mono monomac

我正在尝试在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。

请帮忙吗?

1 个答案:

答案 0 :(得分:0)

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

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

使用代码!