Метод не найден: «System.Threading.Monitor.Enter» с Nhibernate, Mono и SQLite - PullRequest
2 голосов
/ 08 июня 2011

Я пытаюсь перенести существующий проект 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 ]

3 голосов
/ 08 июня 2011

Вы ссылаетесь на правильный профиль? К сожалению, в сообщении об ошибке не указано, какой метод Monitor.Enter отсутствует (их несколько), но я знаю, что некоторые из них были добавлены в профиль .NET 4.0. Если это так, то вам нужно скомпилировать код с dmcs для ссылки на членов профиля .NET 4.0; если вы используете gmcs, вы ориентируетесь на профиль .NET 2.0 / 3.5.

1 голос
/ 17 августа 2011

У меня была похожая проблема с запуском NUnit под Mono для тестовых библиотек, скомпилированных с .Net v4.0.

Я решил эту проблему, указав время выполнения при моно с:

mono --runtime=v4.0 YourProgram.exe

Чтобы NUnit работал вместе с msbuild, есть файл конфигурации, который вы можете изменить, см. Этот пост: http://www.dotnetjobsandcareers.com/running-nunit-tests-on-net-4-assemblies-with-msbuild/

0 голосов
/ 09 июня 2011

Я исправил эту проблему, сославшись на версию Mono.Data.SQLite.dll версии 2.0 - не очень элегантное или хорошее решение, но это можно обойти.

Все равно было бы интересно узнать, есть ли у кого-нибудь лучшие предложения, хотя ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...