2012-11-07 28 views
5

Tôi thấy rằng Microsoft mã nguồn mở IL2JS, mà có vẻ là một công cụ để biên dịch các ứng dụng Silverlight thành javascript tinh khiết thông qua biên dịch IL.Làm cách nào để gọi IL2JS chính xác?

Tuy nhiên, tôi dường như không làm cho nó hoạt động. Khi tôi chạy:

PS C: \ nguồn \ IL2JS-master \ bin> ./il2jsr -rewrite C: \ FlatRedBallProjects \ Test1 \ Te st1 \ test Test1 \ Bin \ Debug \ Test1.dll out .js -reference \ IL2JS_mscorlib.dll

Khi tôi chạy này tôi nhận được

lỗi 3003:. Không có tên lắp ráp giống như lắp ráp 'JSTypes' đặc biệt 1 lỗi, 0 cảnh báo

Vì vậy, tôi cố gắng thêm một lựa chọn -reference cho jstypes và nhận được kết quả như sau:

PS C: \ nguồn \ IL2JS-master \ bin> ./il2jsr -rewrite C: \ FlatRedBallProjects \ Test1 \ Test1 \ Test1 \ Bin \ Debug \ Test1.dll -out test.js -reference. \ IL2JS_mscorlib.dll -reference. \ IL2JS_JSTypes_silverlight.dll

lỗi 3005: Không thể tải lắp ráp từ tập tin 'C: \ source \ IL2JS -master \ bin ': không thể tải mscorlib 1 lỗi, 0 cảnh báo

Vì vậy, có vẻ như bạn chỉ có thể có một tùy chọn -reference, nhưng bạn cần bằng cách nào đó tham khảo cả hai jstypes và mscorlib assemblies.

Tôi đang làm gì sai?


Sửa: Vì vậy, sau khi gỡ lỗi một số chi tiết nó có vẻ như cách chính xác để làm điều này là sử dụng 2 đối số -reference. Lý do tại sao sau này không hoạt động là do

 CCI.SystemTypes.Initialize(false, true, ResolveReference); 

     // ---------------------------------------- 
     // Account for mscorlib being loaded 
     // ---------------------------------------- 
     mscorlib = CCI.SystemTypes.SystemAssembly; 
     if (mscorlib == null || mscorlib.Directory == null) 

Trong AssemblyLoader.cs. Câu lệnh if cuối cùng không thành công (mscorlib.Directory là null). Bây giờ câu hỏi là tại sao ...

Trả lời

0

Theo https://github.com/Reactive-Extensions/IL2JS/blob/master/HOW_TO_BUILD.txt, bạn cần phải thiết lập các biến môi trường IL2JSROOT,

"hoặc registery thiết HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ IL2JS @ gốc được thiết lập để. Cài đặt PowerShell ở trên đặt biến này cho bạn. Nếu bạn muốn để sử dụng các giải pháp hoặc dự án ở nơi khác, vui lòng tự đặt biến này. "

Hãy thử điều đó, điều đó có thể hữu ích.

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