在Iron.io IronWorker中使用.NET依赖项

时间:2014-11-16 15:17:58

标签: c# .net iron.io ironworker

我是Iron.io的IronWorker的新手,我试图通过C#.NET与它进行交互。我设法让the sample on the site工作,它使用System.Web.Script.Serialization库。但是,我想使用Newtonsoft.Json库进行序列化/反序列化。我的.worker文件(位于Visual Studio项目的\bin目录中)如下所示:

runtime 'mono'
exec 'Debug\hello.exe'
file 'Debug\Newtonsoft.Json.dll'

我很确定正在加载Newtonsoft.Json,因为添加file: 'Debug\Netwonsoft.Json.dll'的第3行修复了错误,表示无法找到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 thread,表明v4.0和v4.5之间可能存在.NET框架不匹配。我使用的是v4.5,我尝试将其更改为v4.0而没有运气(所以这可能不是问题)。

有人可以指出我正确的方向如何正确使用依赖关系,例如Newtonsoft.Json(所以至少Iron.io上的示例会起作用)? < / p>

P.S。我一直在用IronSharp作为API来协助与Iron.io产品的接口(一旦我解决了这个依赖性问题)。但是,如果有任何更好的事情我可以退房,我可以接受建议。

@ Featalion的答案下面的答案确实有帮助,因为他指着我stack命令,我这样命令:

runtime 'mono'
stack 'mono-3.6'
exec 'Debug\hello.exe'
file 'Debug\Netwonsoft.Json.dll'

我相信它解决了手头的错误,因为更高的单声道框架似乎处理最新版本的Newtwonsoft.Json.dll。如果我发现其他情况,我会在这里发帖。

请注意,自2014年11月17日起,IronWorker支持的最高堆栈版本似乎为3.6(即使3.10可用,详情为found here)。检查Iron.io at this link的最高稳定版本。

1 个答案:

答案 0 :(得分:3)

这可能与IronWorker服务上的单声道版本有关。我找到了related question on StackOverflow。尝试将.worker文件中的堆叠更改为mono-3.6mono-3.0。查看所有可能的运行时环境on Iron.io's dev sitemono运行时是默认值,它是mono-2.10的别名。