在 VS2010 中使用 IronRuby v1.1.x 创建 IronRuby 项目后,我几乎可以通过导入它们来使用 .NET 库。但实际上无法将ironruby 编译成exe/DLL。
我看到了构建选项,但无法从 IronRuby 项目构建任何 exe 或 DLL。请帮忙 !

最佳答案

您不能将 IronRuby 类编译为 .NET 程序集,然后从另一个程序集访问它们。

Preet 是正确的,你能得到的最接近的是将你的 IronRuby 脚本嵌入(比如)一个 C# 程序集中。从 C# 方面,可以实例化您的 Ruby 类。因此,给定以下 Ruby 类:

class HelloWorld
  def say_hello
    puts 'Hello'
  end
end

您可以从资源文件加载它并从 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();

关于compiler-construction - 我可以将 VS2010 中的 IronRuby 项目编译成 DLL/exe 文件吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4191119/

10-10 06:27