Использование.NET зависимостей с Iron.io IronWorker
Я новичок в IronWorker Iron.io, и я пытаюсь взаимодействовать с ним через C#.NET. Мне удалось заставить работать образец на сайте, который использует библиотеку System.Web.Script.Serialization. Однако я хочу использовать библиотеку Newtonsoft.Json для сериализации / десериализации. мой .worker
файл (находится в \bin
каталог проекта Visual Studio) выглядит следующим образом:
runtime 'mono'
exec 'Debug\hello.exe'
file 'Debug\Newtonsoft.Json.dll'
Я вполне уверен, что Newtonsoft.Json загружается, потому что добавление 3-й строки file: 'Debug\Netwonsoft.Json.dll'
исправлена ошибка, из-за которой не было найдено Newtonsoft.
Ошибка, которую я получаю при попытке запустить задачу, заключается в следующем (я удалил любую, казалось бы, конфиденциальную информацию):
{"code_id":"[CODE_ID]","code_name":"hello","created_at":"2014-11-
16T13:48:01Z","duration":2452,"end_time":"2014-11-16T13:48:06Z","id":"[ID]","msg":"Unhandled
Exception: System.TypeLoadException: Could not load type
'System.Runtime.CompilerServices.ExtensionAttribute' from assembly
'Newtonsoft.Json'.\n at HelloWorld.Main (System.String[] args) [0x00000] in <filename
unknown>:0 \n[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could
not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly
'Newtonsoft.Json'.\n","project_id":"[PROJECTID]","start_time":
"2014-11-16T13:48:04Z","timeout":3600,"updated_at":"2014-11-16T13:48:07Z","status"
:"error"}
В процессе отслеживания ошибки: Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'Newtonsoft.Json'
Я наткнулся на SO поток, который предположил, что может быть несоответствие.NET Framework между v4.0 и v4.5. Я использую v4.5, и я попытался изменить его на v4.0 без удачи (так что это не проблема).
Может ли кто-нибудь, пожалуйста, указать мне правильное направление относительно того, как правильно использовать зависимость, такую как Newtonsoft.Json
(так будет работать хотя бы образец на Iron.io)?
PS Я играю с IronSharp в качестве API, чтобы помочь взаимодействовать с продуктами Iron.io (как только я преодолею эту проблему зависимости). Но я открыт для предложений, если есть что-то лучшее, что я должен проверить.
РЕШЕНИЕ
@ Ответ Featalion ниже очень помог, потому что он указал мне на stack
команда, в которую я поместил вот так:
runtime 'mono'
stack 'mono-3.6'
exec 'Debug\hello.exe'
file 'Debug\Netwonsoft.Json.dll'
Я полагаю, что это помогло устранить ошибку, потому что более высокий моно-фреймворк, похоже, обрабатывает последнюю версию Newtwonsoft.Json.dll. Я отправлю здесь, если я найду другое.
Обратите внимание, что по состоянию на 17.11.2014 представляется, что самая высокая версия стека, поддерживаемая IronWorker, составляет 3,6 (хотя версия 3.10 доступна, подробности можно найти здесь). Проверьте самую высокую стабильную версию Iron.io по этой ссылке.
1 ответ
Это, возможно, связано с моно версией на сервисе IronWorker. Я нашел связанный вопрос на Stackru. Попробуйте изменить стек в вашем .worker
подать в mono-3.6
или же mono-3.0
, Смотрите все возможные среды выполнения на сайте разработчика Iron.io. mono
время выполнения по умолчанию, и это псевдоним для mono-2.10
,