将.NET依赖项与 Iron.io IronWorker一起使用

本文关键字:IronWorker 一起 io Iron NET 依赖 | 更新日期: 2023-09-27 18:30:31

我是Iron.io的IronWorker的新手,我正在尝试通过C#.NET与它交互。我已经设法使站点上的示例工作,该示例利用了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线程,该线程表明v4.0和v4.5之间可能存在.NET框架不匹配。我正在使用 v4.5,我尝试将其更改为 v4.0 但没有运气(所以这可能不是问题)。

有人可以指出我如何正确利用依赖项的正确方向,例如Newtonsoft.Json(因此至少 Iron.io 上的示例将起作用)?

附言我一直在玩弄 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 可用,详细信息可在此处找到)。在此链接中查看 Iron.io 的最高稳定版本。

将.NET依赖项与 Iron.io IronWorker一起使用

这可能与 IronWorker 服务上的单声道版本有关。我在StackOverflow上找到了相关的问题。尝试将.worker文件中的堆栈更改为 mono-3.6mono-3.0 。在 Iron.io 的开发网站上查看所有可能的运行时环境。 mono运行时是默认的,它是mono-2.10的别名。