Thứ Năm, 13 tháng 4, 2023

Đóng gói nhiều DLL lại thành 1 DLL duy nhất (Khi DLL này gọi đến DLL kia chạy, nhưng không muốn add references nhiều DLL)

Để gộp các DLL phụ thuộc vào một DLL chính, bạn có thể sử dụng công cụ ILMerge. ILMerge là một công cụ mã nguồn mở cho phép bạn gộp nhiều tệp DLL thành một tệp DLL duy nhất.

Cài đặt ILMerge bằng cách tải xuống và cài đặt gói cài đặt từ trang web chính thức của ILMerge. Hoặc search trong Nuget :  https://www.nuget.org/packages/ilmerge

Sau khi cài đặt, bạn có thể sử dụng ILMerge trong dòng lệnh hoặc trong script MSBuild.

Ví dụ, để gộp tất cả các DLL phụ thuộc vào một DLL chính có tên là MyApplication.exe, bạn có thể sử dụng lệnh dòng lệnh sau:

cmd
ILMerge.exe /target:exe /out:MyApplicationMerged.exe MyApplication.exe DependentAssembly1.dll DependentAssembly2.dll

Trong ví dụ này, ILMerge.exe là tên tệp thực thi của ILMerge, /target:exe cho biết rằng đối tượng đầu vào là một tệp thực thi, /out:MyApplicationMerged.exe cho biết tên của tệp kết quả, và MyApplication.exe, DependentAssembly1.dll và DependentAssembly2.dll là các tệp DLL cần được gộp vào tệp chính.

Nếu bạn muốn gộp các tệp DLL thành một tệp DLL thư viện, bạn có thể thay thế /target:exe bằng /target:library.

Ví dụ: Để gộp các tệp DLL "file1.dll", "file2.dll", "file3.dll" thành một tệp DLL duy nhất có tên "newfile.dll" bằng ILMerge, bạn có thể sử dụng lệnh dòng lệnh sau:

cmd
ILMerge.exe /out:newfile.dll file1.dll file2.dll file3.dll

Bạn cần đảm bảo rằng tất cả các tệp DLL phụ thuộc được đặt trong cùng thư mục với tệp thực thi ILMerge.exe. Bạn cũng có thể chỉ định đường dẫn tuyệt đối hoặc tương đối đến các tệp DLL nếu chúng không nằm trong cùng thư mục.

Không có nhận xét nào: