Momenteel ben ik bezig met een C# applicatie te maken die dus 1 of meerdere Ruby scripts moet uitvoeren. Dit lukt aardig, zolang het Ruby script geen andere classen "importeerd" (met de require method).
In mijn C# project heb ik een aantal .dll (oa IronRuby.dll, IronRuby.Libraries.dll, Microsoft.Scripting.dll, etc) als reference toegevoegd om de Ruby scripts te kunnen draaien.
Locatie scripts: D:\Projects\Ruby\Test
Locatie C# app: D:\Projects\VisualStudio\C#\Test
Voorbeeld Ruby script:
require 'Test'
aTest = Test.new
puts aTest.attr
De volgende code roept een Ruby script aan:
var runtime = Ruby.CreateRunTime();
var engine = runtime.GetEngine();
engine.ExecuteFile("D:\\Projects\\Ruby\\Test\\RubyScript.rb");
Als ik de applicatie run, krijg ik de volgende foutmelding:
- No such file or directory - Test
Dit werkt alleen als:
- Ruby scripts geen require bevatten
- De require met een absolute locatie is gedefinieerd
- De C# applicatie en .dll's in dezelfde als de scripts staan
Over geen vd mogelijke oplossing ben ik echt tevreden. De vraag is dus hoe kan ik dit anders oplossen? Is het mogelijk om in de applicatie referenties aan te geven waar de scripts gevonden kunnen worden? Of is mijn hele aanpak al verkeerd en moet ik een andere oplossing gebruiken?
Alle informatie is welkom.
Alvast bedankt
In mijn C# project heb ik een aantal .dll (oa IronRuby.dll, IronRuby.Libraries.dll, Microsoft.Scripting.dll, etc) als reference toegevoegd om de Ruby scripts te kunnen draaien.
Locatie scripts: D:\Projects\Ruby\Test
Locatie C# app: D:\Projects\VisualStudio\C#\Test
Voorbeeld Ruby script:
require 'Test'
aTest = Test.new
puts aTest.attr
De volgende code roept een Ruby script aan:
var runtime = Ruby.CreateRunTime();
var engine = runtime.GetEngine();
engine.ExecuteFile("D:\\Projects\\Ruby\\Test\\RubyScript.rb");
Als ik de applicatie run, krijg ik de volgende foutmelding:
- No such file or directory - Test
Dit werkt alleen als:
- Ruby scripts geen require bevatten
- De require met een absolute locatie is gedefinieerd
- De C# applicatie en .dll's in dezelfde als de scripts staan
Over geen vd mogelijke oplossing ben ik echt tevreden. De vraag is dus hoe kan ik dit anders oplossen? Is het mogelijk om in de applicatie referenties aan te geven waar de scripts gevonden kunnen worden? Of is mijn hele aanpak al verkeerd en moet ik een andere oplossing gebruiken?
Alle informatie is welkom.
Alvast bedankt