2010-08-27 26 views
1

Ce que je veux faire est d'introduire le AppDomain de l'application en cours d'exécution dans le script Ruby chargé (Iron).IronRuby, DLR, Inclusion Scope

Voici un exemple de ce que je veux atteindre:


using System; 
using Microsoft.Scripting; 
using Microsoft.Scripting.Hosting; 
using IronRuby; 

namespace Testing 
{ 
    public class MainClass 
    { 
     public MainClass() { } 
     public override string ToString() { return "Hello World"; } 
     public static void Main() 
     { 
      ScriptEngine engine = IronRuby.Ruby.CreateEngine(); 
      ScriptScope scope = engine.CreateScope(); 
      String code = "p Testing::MainClass.new.to_str"; 
      ScriptSource script = engine.CreateScriptSourceFromString(code, SourceCodeKind.SingleStatement); 
      script.Compile(); 
      script.Execute(scope); 
     } 
    } 
} 

Le code ne fonctionne pas ofcourse, parce que le AppDomain, ou la portée (je ne suis pas sûr de ce fait) n'est pas chargé dans le moteur IronRuby. Donc, la question est, comment puis-je faire fonctionner le code (imprimer "Bonjour tout le monde!")?

Répondre

0

Ici, nous allons, nous pouvons charger avec l'exécution des ensembles:


using System; 
using System.Reflection; 
using Microsoft.Scripting; 
using Microsoft.Scripting.Hosting; 
using IronRuby; 

namespace Testing 
{ 
    public class MainClass 
    { 
     public MainClass() { } 
     public override string ToString() { return "Hello World"; } 
     public static void Main() 
     { 
      ScriptEngine engine = IronRuby.Ruby.CreateEngine(); 
      engine.Runtime.LoadAssembly(Assembly.LoadFile(Assembly.GetExecutingAssembly().Location)); 
      ScriptScope scope = engine.CreateScope(); 
      String code = "p Testing::MainClass.new"; 
      ScriptSource script = engine.CreateScriptSourceFromString(code, SourceCodeKind.SingleStatement); 
      script.Execute(scope); 
     } 
    } 
}
+0

Pouvez-vous mettre à jour cet exemple pour la compatibilité avec Windows Phone Visual Studio 2012? Parce que j'obtiens des erreurs lorsque j'essaie d'utiliser IronRuby dans un projet Windows Phone C#. – mcandre