Вызов объекта IronPython из C # с моно - PullRequest
3 голосов
/ 11 октября 2010

У меня следующий код IronPython.

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

Мне нужно вызвать это из C #, и я придумал следующий код.

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);
    }
}

После копирования IronPython.dll я запускаю следующую команду. (Я попытался запустить gacutil, но я получил ошибок .

 dmcs /r:IronPython.dll callipy.cs

Но я получил несколько сообщений об ошибке следующим образом.

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.
...

Похоже, что IronPython нужен Microsoft.Scipting.Core, но с моно я не знаю, что делать?

  • Может ли C # запускать объект IronPython на Mono? Если да, то как это сделать?

1 Ответ

13 голосов
/ 11 октября 2010

IronPython не является отдельной DLL.У него есть некоторые зависимости, которые должны были поставляться с IronPython (они включены в последнюю версию таргетированного дистрибутива .NET 2.0 - см. страницу загрузки IronPython ):

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

Убедитесь,Ваш проект может найти эти библиотеки DLL (чего в настоящее время нет, поэтому вы получаете ошибки).Я никогда не пробовал запускать IronPython на Mono, но он должен работать .

Обратите внимание, что версия IronPython для .NET 4.0 не включает (или не требует) Microsoft.Scripting.Core.dll и Microsoft.Scripting.ExtensionAttribute.dll, поскольку их функциональность объединена в System.Core.См. этот ответ для получения более подробной информации.

...