2010-02-03 21 views
5

This page trên trang web trợ giúp IronRuby nói về việc có thể 'yêu cầu' một số hội đồng nổi tiếng như System.Windows.Forms mà không cần phải quay ra toàn bộ 'ah-come-on-gimme-a-break-here -bạn không thể nghiêm túc được 'tên mạnh mẽ của hội đồng.IronRuby - làm thế nào để yêu cầu. NET cụm mà không có tên mạnh?

Trong các tài liệu nó nói này:

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

Nhưng khi tôi cố gắng cùng 'đòi hỏi', tôi có được điều này:

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

Những gì tôi có thể làm sai? Nó có thể là một vấn đề thiết lập? Tôi không thể thấy "thư mục libs này trên đường dẫn tải" được đề cập trong tài liệu. Tài liệu có sai không?

Cảm ơn.

Trả lời

2

Vâng, nó một vấn đề thiết lập - có hai bản sao của ir.exe trong bản tải xuống IronRuby và tôi đã sử dụng sai.

7

Cách thức hoạt động này là do các chàng trai IronRuby đã viết một loạt các kịch bản trình bao bọc.

Look in <your ironruby install path>\lib\ironruby và bạn sẽ thấy System.Windows.Forms.rb, System.Drawing.rb, vv

gì xảy ra khi bạn làm require 'System.Windows.Forms' là IronRuby thấy rằng tập tin rb và chạy nó. Mã bên trong tập tin đó chỉ làm đầy đủ tên mạnh mẽ yêu cầu cho bạn.

Nếu bạn muốn tải dll khác là họ đã không viết giấy gói cho, bạn có 3 lựa chọn:

  1. yêu cầu đường dẫn đầy đủ đến các dll (ví dụ c:\program files\whatever\whatever\blah.dll)

  2. yêu cầu tên mạnh (điều này chỉ hoạt động nếu nó ở trong GAC hoặc ở một nơi nào khác IronRuby có thể tìm thấy dll's in)

  3. sử dụng load_assembly - Đây là thuận tiện nhất, nhưng IIRC tải dll vào LoadFrom ngữ cảnh, không phải là ngữ cảnh Load.
    Nếu bạn không hiểu điều đó có nghĩa, sau đó về cơ bản nó là tốt trong thử nghiệm, nhưng đừng làm điều đó trong sản xuất :-)

+1

Cảm ơn - đó là thú vị để xem cách dân gian IronRuby thực hiện điều này. – mackenir

+0

Tôi gặp sự cố khác và sử dụng 'load_assembly' đã sửa nó. Tôi có thể tìm thêm chi tiết về sự khác nhau giữa 'require' và' load_assembly' ở đâu? –

Các vấn đề liên quan