﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Diễn đàn lập trình viên .NET / Visual Studio .Net và các vấn đề liên quan / Window Form Application  / Kết hợp các Assembly sử dụng ILMerge / Latest Posts</title><generator /><description>Diễn đàn lập trình viên .NET</description><link>http://forum.vi-vn.com/</link><webMaster>admin@vi-vn.com</webMaster><lastBuildDate>Sat, 31 Jul 2010 22:31:39 GMT</lastBuildDate><ttl>20</ttl><item><title>Kết hợp các Assembly sử dụng ILMerge</title><link>http://forum.vi-vn.com/Topic1418-15-1.aspx</link><description>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.&lt;BR&gt;&lt;BR&gt;ILMerge Là gi?&lt;BR&gt;&lt;BR&gt;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.&lt;BR&gt;&lt;BR&gt;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.&lt;BR&gt;&lt;BR&gt;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.&lt;BR&gt;&lt;BR&gt;[url=http://www.microsoft.com/Downloads/details.aspx?familyid=22914587-B4AD-4EAE-87CF-B14AE6A939B0&amp;amp;displaylang=en]Nhấn vào đây để download[/url]&lt;BR&gt;&lt;BR&gt;Kết hợp các assembly&lt;BR&gt;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).&lt;BR&gt;&lt;BR&gt;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.&lt;BR&gt;&lt;BR&gt;[code]ilmerge /out:Merged.dll Primary.dll Secondary1.dll Secondary2.dll[/code]&lt;BR&gt;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.&lt;BR&gt;&lt;BR&gt;[code]ilmerge /wildcards /out:Merged.dll Primary.dll Microsoft*.dll[/code]&lt;BR&gt;Logging Output&lt;BR&gt;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.&lt;BR&gt;&lt;BR&gt;[code]ilmerge /log /out:Merged.dll Primary.dll Secondary1.dll Secondary2.dll[/code]&lt;BR&gt;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.&lt;BR&gt;&lt;BR&gt;[code]ilmerge /log:log.txt /out:Merged.dll Primary.dll Secondary1.dll Secondary2.dll[/code]&lt;BR&gt;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.&lt;BR&gt;&lt;BR&gt;&lt;P&gt;&lt;IMG src="http://forum.vi-vn.com/Uploads/Images/ab577626-5ebd-470d-a7a5-9a86.png"&gt;&lt;BR&gt;&lt;BR&gt;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.&lt;BR&gt;&lt;BR&gt;[code]C:\Program Files\Microsoft\ILMerge&amp;gt;ILMerge C:\Temp\ILMerge\CSConsumer\bin\Releas&lt;BR&gt;e\CSConsumer.exe C:\Temp\ILMerge\CSConsumer\bin\Release\DLLLibrary.dll /out:C:\m&lt;BR&gt;erged.exe /log[/code]&lt;P&gt;Giờ mình sử dụng Dis# để xem code của file thực thi của mình, các bạn xem.&lt;BR&gt;&lt;BR&gt;[img]http://forum.vi-vn.com/Uploads/Images/disharp.png[/img]&lt;P&gt;Have fun!</description><pubDate>Sun, 26 Jul 2009 10:42:41 GMT</pubDate><dc:creator>quachnguyen</dc:creator></item></channel></rss>