找不到方法:'System.Threading.Monitor.Enter'与Nhibernate,Mono& SQLite的

时间:2011-06-08 15:37:29

标签: c# nhibernate sqlite mono

我正在尝试将现有的NHibernate项目从使用MySQL移植到使用SQLite,当我尝试运行测试时,我遇到了一个有趣的错误:

1) ProductRepository_Fixture : System.MissingMethodException : Method not found: 'System.Threading.Monitor.Enter'.

我试过谷歌搜索这个错误没有运气。我认为我必须缺少某种参考 - 但我无法弄清楚是什么......

这一切都是在Mono上完成的。

我缺少什么想法?

更新:此后发现了我之前未发现的进一步错误消息:

.Missing method System.Type::op_Equality(Type,Type) in assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly /tmp/nunit20/ShadowCopyCache/4606_634431542912600100/Tests/assembly/shadow/fa3c43db/9b71732a_614d30f1_00000001/Mono.Data.Sqlite.dll
Missing method System.Threading.Monitor::Enter(object,bool&) in assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly /tmp/nunit20/ShadowCopyCache/4606_634431542912600100/Tests/assembly/shadow/fa3c43db/9b71732a_614d30f1_00000001/Mono.Data.Sqlite.dll
F    Missing method System.Threading.Monitor::Enter(object,bool&) in assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly /tmp/nunit20/ShadowCopyCache/4606_634431542912600100/Tests/assembly/shadow/fa3c43db/9b71732a_614d30f1_00000001/Mono.Data.Sqlite.dll
Missing method System.Threading.Monitor::Enter(object,bool&) in assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly /tmp/nunit20/ShadowCopyCache/4606_634431542912600100/Tests/assembly/shadow/fa3c43db/9b71732a_614d30f1_00000001/Mono.Data.Sqlite.dll
.F.F.F.FMissing method System.Threading.Monitor::Enter(object,bool&) in assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly /tmp/nunit20/ShadowCopyCache/4606_634431542912600100/Tests/assembly/shadow/fa3c43db/9b71732a_614d30f1_00000001/Mono.Data.Sqlite.dll

3 个答案:

答案 0 :(得分:3)

您是否引用了正确的个人资料?不幸的是,错误消息没有指定缺少哪个Monitor.Enter方法(有几个),但我知道有些方法被添加到.NET 4.0配置文件中。如果是这种情况,那么您需要使用dmcs编译代码以引用.NET 4.0配置文件成员;如果您使用gmcs,那么您的目标是.NET 2.0 / 3.5配置文件。

答案 1 :(得分:1)

我在使用.Net v4.0编译的测试dll在Mono下运行NUnit时遇到了类似的问题。

我通过使用:

运行mono来指定运行时解决了这个问题

mono --runtime=v4.0 YourProgram.exe

对于NUnit与msbuild一起使用,有一个你可以修改的配置文件,请看这篇文章: http://www.dotnetjobsandcareers.com/running-nunit-tests-on-net-4-assemblies-with-msbuild/

答案 2 :(得分:0)

我通过专门引用Mono.Data.SQLite.dll的2.0版本来解决这个问题 - 这不是一个非常优雅或好的解决方案,但它可以作为一种解决方法。

仍然有兴趣听听是否有人有任何更好的建议......