2010-02-03 13 views
5

Na stronie pomocy IronRuby mówi się o tym, że można "wymagać" niektórych dobrze znanych zestawów, takich jak System.Windows.Forms, bez konieczności przerabiania całego "ah-come-on-gimme-a-break-here -you-can-to-be-serious "mocna nazwa zespołu.IronRuby - jak wymagać zestawów .NET bez silnej nazwy?

W docs mówi tak:

>>> require "System.Windows.Forms" 
=> true 

Ale gdy próbuję to samo 'wymagają', mam to:

>>> require "System.Windows.Forms" 
IronRuby.Libraries:0:in 'require': no such file to load -- System.Windows.Forms (LoadError) 
     from :0:in 'Initialize##1' 

Co mogę robić źle? Czy to może być problem z instalacją? Nie widzę tego "katalogu libs na ścieżce ładowania", o którym mowa w dokumentacji. Czy dokumentacja jest zła?

Dzięki.

Odpowiedz

2

Cóż, to było problem z instalacją - w pliku IronRuby były dwie kopie pliku ir.exe, a ja użyłem niewłaściwego.

7

Sposób, w jaki to działa, polega na tym, że faceci IronRuby napisali kilka skryptów opakowujących.

Look w <your ironruby install path>\lib\ironruby a zobaczysz System.Windows.Forms.rb, System.Drawing.rb itp

Co się dzieje, gdy robisz require 'System.Windows.Forms' że IronRuby stwierdzi, że plik rb i uruchamia go. Kod wewnątrz tego pliku wystarczy dla ciebie o pełnej silnej nazwie.

Jeśli chcesz załadować inny dll to, że nie zostały one napisane owijarki do, masz 3 opcje:

  1. wymagają pełną ścieżkę do biblioteki DLL (np c:\program files\whatever\whatever\blah.dll)

  2. wymagają silny nazwa (ta działa tylko wtedy, gdy znajduje się w GAC lub gdzieś indziej IronRuby można znaleźć w dll)

  3. użytku load_assembly - to jest najbardziej wygodne, ale IIRC ładuje dll doKontekst, a nie kontekst Load.
    Jeśli nie rozumiesz, co to znaczy, to w zasadzie to dobrze w testach, ale nie rób tego w produkcji :-)

+1

Dzięki - to interesujące zobaczyć, jak ten lud IronRuby realizowane. – mackenir

+0

Miałem inny problem i naprawiłem go za pomocą 'load_assembly'. Gdzie mogę znaleźć więcej szczegółów na temat różnic między 'require' i' load_assembly'? –

Powiązane problemy