visual-studio-2010ironruby

Can I compile IronRuby project in VS2010 into DLL/exe file?


After created IronRuby project in VS2010 by using IronRuby v1.1.x, I was able to use almost .NET library by importing them. But can't actually compile ironruby into exe/DLL. I see the build option but can't build any exe or DLL from IronRuby project.


Solution

  • You can't compile your IronRuby classes into a .NET assembly and then access them from another assembly.

    Preet is right that the nearest you can get is to embed your IronRuby scripts in (say) a C# assembly. From the C# side it would then be possible to instantiate your Ruby classes. So given the following Ruby class:

    class HelloWorld
      def say_hello
        puts 'Hello'
      end
    end
    

    You could load this from a resource file and run it from C#:

    using Microsoft.Scripting.Hosting;
    using Microsoft.Scripting.Runtime;
    using IronRuby;
    
    var runtime = IronRuby.Ruby.CreateRuntime();
    var engine = runtime.GetEngine("ruby");
    
    var assembly = Assembly.GetExecutingAssembly();
    var stream = assembly.GetManifestResourceStream("PathToResource.test.rb");
    string code = new StreamReader(stream).ReadToEnd();
    
    var scope = engine.CreateScope();
    engine.Execute(code, scope);
    
    dynamic helloWorldClass = engine.Runtime.Globals.GetVariable("HelloWorld");
    dynamic ironRubyObject = engine.Operations.CreateInstance(helloWorldClass);
    ironRubyObject.say_hello();