web-dev-qa-db-fra.com

Problèmes d'intégration d'IronPython dans C # (le compilateur manquant a requis le membre «Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember»

J'essaie de faire un simple bonjour pour tester l'intégration d'IronPython dans C # mais je n'arrive pas à résoudre ce problème.

Ceci est mon fichier C #;

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

Et ceci est la classe python;

import sys

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

Mon framework .NET cible est 4.0 et j'utilise IronPython 2.6 ..

J'obtiens 2 erreurs lorsque je lance celui-ci provient d'un fichier appelé "CSC"; Erreur 5 Compilateur manquant membre requis

"Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember" C:\Users\Tolga\documents\visual studio 2012\Projects\WindowsFormsApplication1\consoleTest\CSC consoleTest

L'autre provient du fichier C # que j'ai créé

Erreur 6 Un ou plusieurs types requis pour compiler une expression dynamique sont introuvables. Vous manquez une référence? C:\Users\Tolga\documents\visual studio 2012\Projects\WindowsFormsApplication1\consoleTest\Program.cs 17 9 consoleTest

Voici la sortie du Build

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 ==========
42
Tolga E

Vous devez ajouter une référence à Microsoft.CSharp.dll. Cela fournit les types requis pour utiliser dynamic en C #.

En outre, vous devrez probablement effectuer une mise à niveau vers IronPython 2.7 [.3] ou version ultérieure, car il existe des incompatibilités avec les anciennes versions et les nouveaux frameworks .NET.

118
Reed Copsey

Vous obtiendrez également cette erreur si vous avez inclus des références aux mauvais assemblages cibles . Par exemple, si vous construisez avec le profil complet .Net 4.0, vous devez inclure les assemblages IronPython à partir de:

<install directory>\IronPython 2.7\Platforms\Net40

Y compris les assemblages du Net35 répertoire entraînera également l'erreur RuntimeBinder manquante.

3
cod3monk3y