Difference between requiring a DLL versus using an assembly name?


A couple weeks ago, I started using IronRuby to unit test my C# code.
I was amazed how well it worked. The IronRuby team has done an
amazing job! I’m tremendously impressed.

When I first started using IronRuby, support for requiring DLLs had
just been removed. Because of this, I had the Rake “spec” task copy
the DLLs I was going to test to the directory containing ir.exe.
Yesterday I started modifying the code to require the DLLs instead of
using the assembly names. This works fine for my non-signed DLLs, but
for some reason doesn’t work with the signed Rhino.Mocks.dll. (This
is with revision r113.)

Below is transcript of the issue I found. In the interactive IronRuby
session, notice how the code doesn’t work when the Rhino.Mocks.dll is
required, but does work after ‘Rhino.Mocks, Version=,
Culture=neutral, PublicKeyToken=0b3305902db7183f’ is required.

d:/jad/tmp/Foo $ cat Bar.cs
namespace Foo
using System;
using Rhino.Mocks;

public class Bar
    private MockRepository mocks;

    public Bar(MockRepository mocks)
        this.mocks = mocks;

d:/jad/tmp/Foo $ ls
Bar.cs Rhino.Mocks.dll
d:/jad/tmp/Foo $ csc /t:library /r:Rhino.Mocks.dll Bar.cs
Microsoft ® Visual C# .NET Compiler version 7.10.6001.4
for Microsoft ® .NET Framework version 1.1.4322
Copyright © Microsoft Corporation 2001-2002. All rights reserved.

d:/jad/tmp/Foo $ ls
Bar.cs Bar.dll Rhino.Mocks.dll
d:/jad/tmp/Foo $ ls ~/tmp/ironruby/trunk/build/debug/Rhino.Mocks.dll
d:/jad/tmp/Foo $ ir
IronRuby on .NET 2.0.50727.1433
Copyright © Microsoft Corporation. All rights reserved.

Note that local variables do not work today in the console.
As a workaround, use globals instead (eg $x = 42 instead of x = 42).

require ‘Rhino.Mocks.dll’
=> true

require ‘Bar.dll’
=> true

$mocks = Rhino::Mocks::MockRepository.new
=> #Rhino::Mocks::MockRepository:0x000005c

$bar = Foo::Bar.new($mocks)
:0:in Initialize##14': wrong number or type of arguments forFoo::Bar’ (ArgumentError)

require ‘Rhino.Mocks, Version=, Culture=neutral, PublicKeyToken=0b3305902db7183f’
=> true

$mocks = Rhino::Mocks::MockRepository.new
=> #Rhino::Mocks::MockRepository:0x000005e

$bar = Foo::Bar.new($mocks)
=> #Foo::Bar:0x0000060


Is this a bug, or am I doing something incorrectly?