[Ironruby-core] IronRuby + Mono + WinForms issue

Ivan Porto Carrero ivan at flanders.co.nz
Thu Nov 26 07:32:55 EST 2009


Only on debian apparently and only with version 0.9.3, because it works on
my mac.

When I try it with 0.9.0 - 0.9.2 it works :S

Casing has changed for the lib/ironruby folder apparently it's now
lib/IronRuby in the config file. That is fixed already in git on my branch
but not in the build yet.

To fix it go into <ironrubydir>/bin/ir.exe.config

and change <set option='LibraryPaths' language='Ruby' value='../lib/IronRuby
into <set option='LibraryPaths' language='Ruby' value='../lib/ironruby

or

go into <ironrubydir>/bin/ir

and add the following 2 lines under the shebang line
export MONO_IOMAP=all
export MONO_MANAGED_WATCHER=1

and everything should work as expected.

The second option discards drive letters (windows), \\ path separator and
casing by adding MONO_IOMAP and enables the FileSystemWatcher.

You don't need to require mscorlib anymore it's implied.

require 'System.Windows.Forms'
require 'System.Drawing'

# add form code here


Sorry for the bumpy ride getting started.
---
Met vriendelijke groeten - Best regards - Salutations
Ivan Porto Carrero
GSM: +32.486.787.582
Blog: http://flanders.co.nz
Google Wave: portocarrero.ivan at googlewave.com
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)



On Thu, Nov 26, 2009 at 12:46 PM, Andrew S. Townley <ast at atownley.org>wrote:

> As an interesting side-note (and maybe a crucial point), I remembered I
> had a sample I used the last time I looked at IronRuby back in April.
> This one actually runs fine with no errors.
>
> Do you really have to specify the whole assembly information with each
> require?
>
> $ cat formtest.rb
> require 'mscorlib'
> require 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
> PublicKeyToken=b77a5c561934e089'
> require 'System.Drawing, Version=2.0.0.0, Culture=neutral,
> PublicKeyToken=b03f5f7f11d50a3a'
>
> Application = System::Windows::Forms::Application
> Form = System::Windows::Forms::Form
> MessageBox = System::Windows::Forms::MessageBox
> Button = System::Windows::Forms::Button
> Point = System::Drawing::Point
>
> class MyForm < Form
>
>  def initialize
>    self.text = "My .NET Form from Ruby"
>
>    @button = Button.new
>    @button.location = Point.new 150, 150
>    @button.text = "Click Me!"
>
>    my_click_handler = Proc.new {|sender, e| MessageBox.show 'Hello from
> Ruby!'}
>    @button.click(&my_click_handler)
>
>    self.controls.add @button
>  end
> end
>
> my_form = MyForm.new
> Application.run my_form
>
> I'm a bit confused at this stage.... :(
>
> On Thu, 2009-11-26 at 11:36 +0000, Andrew S. Townley wrote:
> > On Thu, 2009-11-26 at 12:22 +0100, Ivan Porto Carrero wrote:
> > > what's the output of your pkgconfig path?
> > >
> > >
> > > ivan at debian-stage:~
> > > » pkg-config --variable=libdir mono
> > > /usr/local/mono/lib/pkgconfig/../../lib
> >
> > $ pkg-config --variable=libdir mono
> > /usr/local/mono-2.4/lib/pkgconfig/../../lib
> >
> > > ivan at debian-stage:~
> > > » echo $PKG_CONFIG_PATH
> > > /usr/local/mono/lib/pkgconfig
> >
> > $ echo $PKG_CONFIG_PATH
> > /usr/local/mono-2.4/lib/pkgconfig
> >
> > > I added these lines to my .bashrc file
> > >
> > > export PKG_CONFIG_PATH=/usr/local/mono/lib/pkgconfig:$PKG_CONFIG_PATH
> > > export PATH="~/bin:/usr/local/mono/bin:$PATH"
> >
> > Yeah, I have a specific mono-2.4 environment script that I source based
> > on notes from here:
> >
> http://www.centriment.com/2009/04/01/building-mono-24-from-source-on-ubuntu-810/
> >
> > #!/bin/bash
> > MONO_PREFIX=/usr/local/mono-2.4
> > export DYLD_LIBRARY_PATH=$MONO_PREFIX/lib:$DYLD_LIBRARY_PATH
> > export LD_LIBRARY_PATH=$MONO_PREFIX/lib:$LD_LIBRARY_PATH
> > #export C_INCLUDE_PATH=$MONO_PREFIX/include
> > export ACLOCAL_PATH=$MONO_PREFIX/share/aclocal
> > export PKG_CONFIG_PATH=$MONO_PREFIX/lib/pkgconfig
> > PATH=$MONO_PREFIX/bin:$PATH
> >
> > >
> > > You can find more stuff here:
> > > http://linux.die.net/man/1/mono
> >
> >
> > >
> > > Are you able to get a hello world app with C# going in winforms?
> >
> > Yes.
> >
> > $ cat hello.cs
> > using System;
> > using System.Drawing;
> > using System.Windows.Forms;
> >
> > public class HelloWorld : Form
> > {
> >       static public void Main ()
> >       {
> >               Application.Run (new HelloWorld ());
> >       }
> >
> >       public HelloWorld ()
> >       {
> >               Button b = new Button ();
> >               b.Text = "Click Me!";
> >               b.Click += new EventHandler (Button_Click);
> >               Controls.Add (b);
> >       }
> >
> >       private void Button_Click (object sender, EventArgs e)
> >       {
> >               MessageBox.Show ("Button Clicked!");
> >       }
> > }
> > $ gmcs -pkg:dotnet hello.cs
> > $ which mono
> > /usr/local/mono-2.4/bin/mono
> > $ mono hello.exe
> > $
> >
> > > ---
> > > Met vriendelijke groeten - Best regards - Salutations
> > > Ivan Porto Carrero
> > > Blog: http://flanders.co.nz
> > > Google Wave: portocarrero.ivan at googlewave.com
> > > Twitter: http://twitter.com/casualjim
> > > Author of IronRuby in Action (http://manning.com/carrero)
> > >
> > >
> > >
> > > On Thu, Nov 26, 2009 at 12:10 PM, Andrew S. Townley <ast at atownley.org>
> > > wrote:
> > >         I sent this to Thibaut, but I probably should've sent it to
> > >         the whole
> > >         list since it probably isn't directly related to his work
> > >         (sorry
> > >         Thibaut!).
> > >
> > >         Thanks to Ivan's pointer to mono builds, I was able to get
> > >         IronRuby to
> > >         work as I would've expected.  However, it doesn't seem able to
> > >         find the
> > >         WinForms stuff that I clearly have on my machine:
> > >
> > >         $ locate System.Windows.Forms
> > >         /usr/lib/mono/1.0/System.Windows.Forms.dll
> > >         /usr/lib/mono/gac/System.Windows.Forms
> > >
> /usr/lib/mono/gac/System.Windows.Forms/1.0.5000.0__b77a5c561934e089
> > >
> /usr/lib/mono/gac/System.Windows.Forms/1.0.5000.0__b77a5c561934e089/System.Windows.Forms.dll
> > >
> /usr/lib/mono/gac/System.Windows.Forms/1.0.5000.0__b77a5c561934e089/System.Windows.Forms.dll.config
> > >         /usr/local/ironruby/lib/ironruby/System.Windows.Forms.rb
> > >         /usr/local/mono-2.4/lib/mono/1.0/System.Windows.Forms.dll
> > >         /usr/local/mono-2.4/lib/mono/2.0/System.Windows.Forms.dll
> > >         /usr/local/mono-2.4/lib/mono/gac/System.Windows.Forms
> > >
> /usr/local/mono-2.4/lib/mono/gac/System.Windows.Forms/1.0.5000.0__b77a5c561934e089
> > >
> /usr/local/mono-2.4/lib/mono/gac/System.Windows.Forms/2.0.0.0__b77a5c561934e089
> > >
> /usr/local/mono-2.4/lib/mono/gac/System.Windows.Forms/1.0.5000.0__b77a5c561934e089/System.Windows.Forms.dll
> > >
> /usr/local/mono-2.4/lib/mono/gac/System.Windows.Forms/1.0.5000.0__b77a5c561934e089/System.Windows.Forms.dll.mdb
> > >
> /usr/local/mono-2.4/lib/mono/gac/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
> > >
> /usr/local/mono-2.4/lib/mono/gac/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.mdb
> > >
> > >         $ which mono
> > >         /usr/local/mono-2.4/bin/mono
> > >
> > >         $ ir -v
> > >         IronRuby 0.9.3.0 on .NET 2.0.0.0
> > >
> > >         $ cat /tmp/test.rb
> > >         require 'System.Windows.Forms'
> > >
> > >         $ ir /tmp/test.rb
> > >         :0:in `require': no such file to load -- System.Windows.Forms
> > >         (LoadError)
> > >                from /tmp/test.rb:1
> > >
> > >         I've even tried explicitly including the .NET 2.0 libraries as
> > >         part of
> > >         the LD_LIBRARY_PATH, but that didn't work:
> > >
> > >         $ echo $LD_LIBRARY_PATH
> > >         /usr/local/mono-2.4/lib:/usr/local/mono-2.4/lib/mono/2.0
> > >
> > >         Obviously, there's still a piece of the puzzle that I'm
> > >         missing.  Any
> > >         ideas?
> > >
> > >         Thanks in advance,
> > >
> > >         ast
> > >         --
> > >         Andrew S. Townley <ast at atownley.org>
> > >         http://atownley.org
> > >
> > >         _______________________________________________
> > >         Ironruby-core mailing list
> > >         Ironruby-core at rubyforge.org
> > >         http://rubyforge.org/mailman/listinfo/ironruby-core
> > >
> > >
> > > _______________________________________________
> > > Ironruby-core mailing list
> > > Ironruby-core at rubyforge.org
> > > http://rubyforge.org/mailman/listinfo/ironruby-core
> --
> Andrew S. Townley <ast at atownley.org>
> http://atownley.org
>
> _______________________________________________
> 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/20091126/acd7ad08/attachment.html>


More information about the Ironruby-core mailing list