Calling IronPython object from C# with mono

匿名 (未验证) 提交于 2019-12-03 02:31:01

问题:

I have the following IronPython code.

class Hello:     def __init__(self):         pass     def add(self, x, y):         return (x+y) 

I need to call this from C#, and I came up with the following code.

using System; using IronPython.Hosting; using IronPython.Runtime; using IronPython; using Microsoft.Scripting.Hosting; using Microsoft.Scripting;  class Hello {     public static void Main()     {         ScriptEngine engine = Python.CreateEngine();         ScriptSource script = engine.CreateScriptFromSourceFile("myPythonScript.py");         ScriptScope scope = engine.CreateScope();          script.Execute(scope);     } } 

After copying IronPython.dll, I run the following command. (I tried to run gacutil, but I got some errors.

  dmcs /r:IronPython.dll callipy.cs 

But I got some error messages as follows.

 Could not load file or assembly 'Microsoft.Scripting.ExtensionAttribute, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Missing method .ctor in assembly /Users/smcho/Desktop/cs/namespace/IronPython.dll, type System.Runtime.CompilerServices.ExtensionAttribute Can't find custom attr constructor image: /Users/smcho/Desktop/cs/namespace/IronPython.dll mtoken: 0x0a000080 Could not load file or assembly 'Microsoft.Scripting.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Could not load file or assembly 'Microsoft.Scripting.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Could not load file or assembly 'Microsoft.Scripting.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. ... 

It seems like that IronPython needs Microsoft.Scipting.Core, but with mono I don't know what to do?

  • Can C# run IronPython object on Mono? If so, how to do that?

回答1:

IronPython is not a stand-alone DLL. It has some dependencies which should have been shipped with IronPython (they are included in the latest zipped distribution targeting .NET 2.0 -- see the IronPython download page):

IronPython.Modules.dll Microsoft.Dynamic.dll Microsoft.Scripting.dll Microsoft.Scripting.Core.dll Microsoft.Scripting.Debugging.dll Microsoft.Scripting.ExtensionAttribute.dll 

Make sure your project can find these DLLs (which it currently can't, which is why you're getting errors). I've never tried running IronPython on Mono, but it should work.

Note that the IronPython release targeting .NET 4.0 doesn't include (or need) Microsoft.Scripting.Core.dll and Microsoft.Scripting.ExtensionAttribute.dll, since their functionality has been merged into System.Core. See this answer for more details.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!