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.edwards at gallagher.co | WEB www.gallagher.co
From: Alexander Ranger <lists at ruby-forum.com>
To: ironruby-core at rubyforge.org
Date: 14/08/2012 05:41 p.m.
Subject: [Ironruby-core] Using .Net cascade assemblies
Sent by: ironruby-core-bounces at 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 at rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://rubyforge.org/pipermail/ironruby-core/attachments/20120815/bdec1a98/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/gif
Size: 3465 bytes
Desc: not available
URL:
<http://rubyforge.org/pipermail/ironruby-core/attachments/20120815/bdec1a98/attachment-0001.gif>