Reputation: 190799
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?
Upvotes: 3
Views: 3424
Reputation: 98746
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.
Upvotes: 13