2010-10-10 7 views
3

J'ai le code IronPython suivant. J'ai besoin de l'appeler à partir de C#, et j'ai trouvé le code suivant:Appel de l'objet IronPython à partir de C# avec mono

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

Après avoir copié IronPython.dll, j'exécute la commande ci-dessous. (J'ai essayé de courir gacutil, mais je suis un peu errors.

 
dmcs /r:IronPython.dll callipy.cs 

Mais j'ai eu quelques messages d'erreur comme suit.

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

Il semble que IronPython a besoin Microsoft.Scipting.Core, mais avec mono Je ne sais pas quoi faire?

  • Can C# utiliser des objets sur IronPython mono? Si oui, comment faire?

Répondre

13

IronPython n'est pas une DLL autonome. Il a quelques dépendances qui auraient dû être livrés avec IronPython (ils sont inclus dans la dernière distribution zippée ciblant .NET 2.0 - voir le IronPython download page):

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

Assurez-vous que votre projet peut trouver ces DLL (ce qui actuellement ne peut pas, ce qui explique pourquoi vous obtenez des erreurs). Je n'ai jamais essayé d'exécuter IronPython sur Mono, mais c'est should work. Notez que la version IronPython ciblant .NET 4.0 n'inclut pas (ou ne nécessite pas) Microsoft.Scripting.Core.dll et Microsoft.Scripting.ExtensionAttribute.dll, puisque leur fonctionnalité a été fusionnée dans System.Core. Voir this answer pour plus de détails.