Могу ли я скомпилировать проект IronRuby в VS2010 в DLL / EXE-файл? - PullRequest
4 голосов
/ 16 ноября 2010

После создания проекта IronRuby в VS2010 с использованием IronRuby v1.1.x я смог использовать почти библиотеку .NET, импортировав их. Но на самом деле не могу скомпилировать Ironruby в EXE / DLL. Я вижу вариант сборки, но не могу собрать какой-либо EXE или DLL из проекта IronRuby. Пожалуйста, помогите!

Ответы [ 3 ]

5 голосов
/ 10 октября 2011

Существует замечательный гем IronRuby, который упаковывает файлы IronRuby в исполняемый файл Windows.

https://github.com/kumaryu/irpack

Для использования:

igem install irpack
irpack -o Program.exe Program.rb
4 голосов
/ 16 ноября 2010

Вы не можете скомпилировать свои классы IronRuby в сборку .NET, а затем получить к ним доступ из другой сборки.

Преет прав, что самое близкое, что вы можете получить, это встроить ваши сценарии 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();
0 голосов
/ 16 ноября 2010

Поскольку Iron Ruby - это просто код на основе DLR.Вы должны быть в состоянии добавить код в ресурс любой сборки.В конечном итоге вам понадобится загрузчик для загрузки кода.Скорее всего, это будет язык CLR.

...