MonoTouch - ошибка System.Reflection.Emit.ModuleBuilder - PullRequest
3 голосов
/ 25 ноября 2011

Я пытаюсь протестировать свое приложение в IPhone (IOS 5), и я получаю следующую ошибку. Работает в симуляторе без проблем.

Я ссылаюсь на внешнюю библиотеку (NewtonSoft.Json.Monotouch.dll), которая, похоже, использует System.Reflection.Emit.ModuleBuilder. Есть ли способ преодолеть эту проблему? Любая помощь в этом отношении очень ценится.

"-r" /Developer/MonoTouch/usr/lib/mono/2.1/System.dll "-r" /Developer/MonoTouch/usr/lib/mono/2.1/System.Xml.dll "-r" / Разработчик / MonoTouch / usr / lib / mono / 2.1 / System.Core.dll "-r" /Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll "-r" / Разработчик / MonoTouch / usr / lib / mono / 2.1 / System.Runtime.Serialization.dll "-r" /Developer/MonoTouch/usr/lib/mono/2.1/System.Web.Services.dll "-r" / Пользователи / тест / приложение / библиотеки / Newtonsoft. Json.MonoTouch.dll "-linksdkonly -sdk" 5.0 "Framework: /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk скопированный /Users/test/application/bin/iPhone/Release/Unleashed.app Не удалось связать сборки: Mono.Linker.ResolutionException: Невозможно разрешить ссылку: System.Reflection.Emit.ModuleBuilder

Спасибо

UPDATE:

Хорошо, я скачал последний NewtonSoft.Json исходный код с ссылка , скомпилировал проект и поместил dll в мой проект. У меня все еще та же проблема. Я выяснил класс, который ссылается на System.Reflection.Emit . Это класс DynamicWrapper в папке Utilities.

Я видел похожую проблему, опубликованную в другом блоге ссылка . Ответ на вопрос предлагает установить поведение лайнера на «Связать все сборки». Может кто-нибудь объяснить, как установить это?

Ответы [ 2 ]

2 голосов
/ 25 ноября 2011

Newtonsoft.Json.MonoTouch.dll , как известно, работает с MonoTouch.Я видел / скомпилировал много приложений, используя его сам.

Вероятно, вы используете старую или неправильно скомпилированную версию сборки (например, отсутствующие определения).Трудно сказать, что, не зная, его происхождение.Попробуйте отследить более новую версию (или отредактируйте свой вопрос, указав, откуда он).

Примечание. Тот факт, что он работает с симулятором, объясняется тем, что используется другая mscorlib.dll разрешить JITting (вместо AOTing) управляемого кода.Это позволяет сборкам симулятора быть намного быстрее, чем сборки устройства.

1 голос
/ 13 декабря 2011

Вместо компиляции Newtonsoft.Json.MonoTouch.dll, которая также не работала для меня, я загрузил исходный код из github, добавил проект в свое решение в MonoTouch и скомпилировал решение. Только тогда все заработало. (и, конечно, как упоминалось выше, не забудьте опции MONOTOUCH; NET35; SILVERLIGHT.)

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