Diễn đàn lập trình viên .NET
Trang chủ       Thành viên    Lịch    Ai đang online
Chào mừng khách ( Đăng nhập | Đăng ký )
        



Kết hợp các Assembly sử dụng ILMerge Nới rộng / Co lại
Tác giả
Tin nhắn
Đả gửi Sunday, July 26, 2009 10:42 AM


Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

Nhóm: Moderators
Lần đăng nhập cuối: Thursday, December 03, 2009 2:23 AM
Đả gửi: 72, Thăm: 178
Khi tạo ra các giải pháp (solution) bao gồm nhiều dự án (projects), Visual Studio tạo ra một assembly cho mỗi dự án. Điều này có thể dẫn đến các thư viện được sử dụng phức tạp, cần nhiều reference. Sử dụng ILMerge, các bạn có thể được kết hợp thành một tập tin.

ILMerge Là gi?

ILMerge là một tiện ích được cung cấp bởi Microsoft cho phép một bộ các assembly để được kết hợp thành một tập tin. Điều này có thể được sử dụng để hợp nhất một tập tin thực thi với sự hỗ trợ các thư viện (DLLs) liên kết động, để có thể cho phép bạn phân phối một chương trình có khả năng chạy thành một tập tin. Nó cũng có thể được sử dụng để đơn giản hóa các thư viện lớn có thể bao gồm nhiều thư viện liên kết động (DLLs) cần phải được tham khảo từ các dự án mà chúng ta sử dụng chúng.

Công cụ ILMerge có thể được sử dụng như là một tiện ích dòng lệnh (command line) hoặc có thể được tham chiếu trong một dự án và được sử dụng lập trình. Trong bài viết này chúng tôi sẽ kiểm tra các chức năng cơ bản được cung cấp bởi các dòng lệnh biến đổi.

ILMerge không được phân phối với. NET framework và như vậy phải được lấy và cài đặt riêng rẽ. Các tập tin cài đặt có thể được tải về miễn phí từ trang web của Microsoft. Sau khi tải về, chỉ cần nhấp đúp vào tập tin để bắt đầu tiến trình cài đặt và làm theo hướng dẫn được cung cấp.

Nhấn vào đây để download

Kết hợp các assembly
Những cú pháp đơn giản nhất cho các dòng lệnh tiện ích của ILMerge yêu cầu bạn cung cấp hai loại thông tin. Thứ nhất, tên mới, kết hợp assembly phải được xác định bằng cách sử dụng "/out". Thứ 2 là 1 danh sách các assembly yêu cầu được ghép (merged), những mục đầu tiên trong danh sách này được coi là assembly chính, nếu nó là 1 file có khả năng thực thi (exec) thì "đầu ra" cũng là tập tin thực thi, tương tự nếu nó là dll thì đầu ra sẻ là 1 dll (thường là class library).

Vì dụ: dòng lệnh sau sẻ merge 1 assembly chính và 2 assembly phục khác thành 1 assembly được kết hợp.

ilmerge /out:Merged.dll Primary.dll Secondary1.dll Secondary2.dll

Trong trường hợp bạn có 1 số lượng lớn assembly được kết hợp, bạn có thể sử dụng Wildcards cho assembly phụ, sử dụng /wildcards để bật chức năng.

ilmerge /wildcards /out:Merged.dll Primary.dll Microsoft*.dll

Logging Output
ILMerge Khi chạy thành công, có thể nhìn thấy ít thông tin phản hồi. Để xem lại các hoạt động mà các công cụ thực hiện, bạn có thể bật chức năng logging vào màn hình với dòng lệnh /log.

ilmerge /log /out:Merged.dll Primary.dll Secondary1.dll Secondary2.dll

Thông thường, bạn sẽ sử dụng ILMerge như là một phần của thủ tục xây dựng một hệ thống tự động. Trong trường hợp này log vào màn hình không phải là một với lựa chọn hữu hiệu, thay vào đó bạn có thể lưu các hành động vào 1 tập tin văn bản.

ilmerge /log:log.txt /out:Merged.dll Primary.dll Secondary1.dll Secondary2.dll

Không gì bằng 1 ví dụ: nhân đâu quachnguyen sẻ làm 1 ví dụ thay cho những lý thuyết bên trên, cho rằng chúng ta có 1 ứng dụng winapp (Window Form) và trong đó có gọi 1 hàm, mà hàm này là nằm trong 1 class library.



Giờ mình muốn khi phân phối ứng dụng này, thì chỉ cần 1 file exe thôi, không cần thư viện DLL đi kèm, cho nên mình sẻ dụng ILMerge, đầu vào của mình là exe file, 1 thư viện liên kết DLL, và đầu ra sẻ là 1 file exe.

C:\Program Files\Microsoft\ILMerge>ILMerge C:\Temp\ILMerge\CSConsumer\bin\Releas
e\CSConsumer.exe C:\Temp\ILMerge\CSConsumer\bin\Release\DLLLibrary.dll /out:C:\m
erged.exe /log

Giờ mình sử dụng Dis# để xem code của file thực thi của mình, các bạn xem.

Have fun!

Bài viết thứ #1418
« Chủ đề trước | Chủ đề kế »


Đang đọc chủ đề này Nới rộng / Co lại
Thành viên đang họat động: 0 (0 Các khách, 0 thành viên, 0 thành viên ẩn danh)
Không có thành viên nào hiện tại xem chủ đề này.
Diễn đàn Mod: Admin, Bill_Gates

All times are GMT +7:00, Bây giờ là 11:22pm

Powered by InstantForum.NET v4.1.4 © 2010
Sự thực thi: 0.078. 5 queries. Vô hiện hoá chức năng nén.
Tin học bình dân Free download ebook, wordpress theme. Seo tips, domain hosting review. And much more...