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