I'm not sure exactly why this happens, I think it's something to do with how the .NET runtime itself delay-loads assemblies and the rules it has for looking for dependent dll's
There are three ways I know of to work around this: 1. Use Dir.chdir to switch your working directory to D:\Programs\Univeris\FooBoo\bin before you start loading the dll's 2. Add to ruby's load path using $: << 'D:\Programs\Univeris\FooBoo\bin' 3. Hook the CLR's AssemblyResolve event... this is a bit more complicated, you can look up how this works on MSDN or I can tell you more if you'd like ______________________________________________________ Orion Edwards | Technical Leader PHONE +64 7 838 9800 | FAX +64 7 838 9801 | EMAIL orion.edwa...@gallagher.co | WEB www.gallagher.co From: Alexander Ranger <li...@ruby-forum.com> To: ironruby-core@rubyforge.org Date: 14/08/2012 05:41 p.m. Subject: [Ironruby-core] Using .Net cascade assemblies Sent by: ironruby-core-boun...@rubyforge.org Hello. I've got 2 .Net assemblies, for example, Foo.dll and Boo.dll Boo contains namespace BooModule { public class Boo { public string Speak() { return "Hello from class Boo"; } } public interface IFoo { string Comment(); } } Foo contains namespace FooModule { public class Foo : IFoo { public string Comment() { return "Class Foo inhereted from IFoo"; } } } In IronRuby console I try: IronRuby 1.1.3.0 on .NET 4.0.30319.239 Copyright (c) Microsoft Corporation. All rights reserved. >>> require 'D:\Programs\Univeris\FooBoo\bin\Boo' => true >>> include BooModule => Object >>> require 'D:\Programs\Univeris\FooBoo\bin\Foo' => true >>> include FooModule (ir):1:in `const_missing': uninitialized constant Object::FooModule (NameError) from (ir):1 If I inherit Foo : Boo I get the same error. But if I move the declaration to the Foo propject, so it's like namespace FooModule { public interface IFoo { string Comment(); } public class Foo : IFoo { public string Comment() { return "Class Foo inhereted from IFoo"; } } } Everything works just fine. IronRuby 1.1.3.0 on .NET 4.0.30319.239 Copyright (c) Microsoft Corporation. All rights reserved. >>> require 'D:\Programs\Univeris\FooBoo\bin\Foo' => true >>> include FooModule => Object >>> foo = Foo.new => FooModule.Foo >>> foo.Comment => 'Class Foo inhereted from IFoo' But I've got a really huge program system that consists of several big dll libraries which I want to use via IronRuby and I just can't move all those libraries into one dll file and into one namespace. What am I doing wrong? -- Posted via http://www.ruby-forum.com/. _______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core
<<image/gif>>
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core