Подтвердить что ты не робот

Проблемы с внедрением IronPython в С# (отсутствующий компилятор требуется члену Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember '

Я пытаюсь сделать простой мир привет, чтобы проверить внедрение IronPython в С#, но, похоже, не может решить эту проблему.

Это мой файл С#;

using System;
using IronPython.Hosting;
using Microsoft.Scripting;
using Microsoft.Scripting.Hosting;
using System.IO;

public class dynamic_demo
{
    static void Main()
    {
        var ipy = Python.CreateRuntime();

        dynamic test = ipy.UseFile(@"../../Test.py");

        test.Simple();
    }
}

И это класс python;

import sys

def Simple():
    print 'Hello from Python'
    print "Call Dir(): "
    print dir()
    print "Print the Path: " 
    print sys.path

Моя целевая платформа .NET - это 4.0, и я использую IronPython 2.6..

Я получаю 2 ошибки, когда я запускаю этот файл из файла с именем "CSC"; Ошибка 5 Отсутствует требуемый член компилятора

'Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember' C:\Users\Tolga\documents\visual студия 2012\Projects\WindowsFormsApplication1\consoleTest\CSC consoleTest

Другой из файла С#, созданного мной

Ошибка 6 Один или несколько типов, необходимых для компиляции динамического выражения Не может быть найдено. Вы не нашли Справка? C:\Users\Tolga\документы\визуальная студия 2012\Projects\WindowsFormsApplication1\consoleTest\Program.cs 17 9 consoleTest

Здесь вывод из сборки

1>------ Build started: Project: consoleTest, Configuration: Debug Any CPU ------
1>CSC : warning CS1685: The predefined type 'System.Runtime.CompilerServices.CallSite' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\IronPython 2.6\Microsoft.Scripting.Core.dll'
1>CSC : warning CS1685: The predefined type 'System.Runtime.CompilerServices.CallSite' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\IronPython 2.6\Microsoft.Scripting.Core.dll'
1>CSC : warning CS1685: The predefined type 'System.Runtime.CompilerServices.CallSiteBinder' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\IronPython 2.6\Microsoft.Scripting.Core.dll'
1>CSC : warning CS1685: The predefined type 'System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll'
1>CSC : error CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember'
1>C:\Users\Tolga\documents\visual studio 2012\Projects\WindowsFormsApplication1\consoleTest\Program.cs(17,9,17,20): error CS1969: One or more types required to compile a dynamic expression cannot be found. Are you missing a reference?
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
4b9b3361

Ответ 1

Вам нужно добавить ссылку на Microsoft.CSharp.dll. Это обеспечивает требуемые типы для использования dynamic в С#.

Кроме того, вам, скорее всего, придется перейти на IronPython 2.7 [.3] или более позднюю версию, так как есть некоторые несовместимости со старыми версиями и новыми .NET-платформами.

Ответ 2

Вы также получите эту ошибку, если у вас включены ссылки на неправильные сборки атак. Например, если вы создаете против .Net 4.0 Полный профиль, вы должны включить сборки IronPython из:

<install directory>\IronPython 2.7\Platforms\Net40

Включение сборок из каталога Net35 также приведет к отсутствию ошибки RuntimeBinder.