2009-08-27 9 views
6

Tôi muốn giữ các thành phần/bộ phận của mình tách biệt rõ ràng khỏi một điểm mã nguồn nhưng tôi cũng cần trong một số trường hợp (có thể không liên quan đến việc mở rộng) để đóng gói chúng trong cùng một dll.Có cách nào để đóng gói nhiều hơn một assembly NET trong một dll?

Có thể đóng gói một số bộ sưu tập .NET trong một dll không? Nếu vậy, Làm thế nào?

Nếu có thể, bạn có nghĩ đó là một ý tưởng hay không? Tại sao?

Bất kỳ trợ giúp nào được đánh giá cao!

Trả lời

9

Kiểm tra bài viết này: Merging .NET assemblies using ILMerge


Như bạn đã biết, liên kết truyền thống của mã đối tượng không còn cần thiết trong NET. Một chương trình .NET thường sẽ là bao gồm nhiều phần. Một ứng dụng điển hình .NET bao gồm một hội đồng thực thi , một vài hội đồng trong thư mục chương trình và một số cụm trong bộ nhớ toàn cầu bộ nhớ cache. Khi chương trình được chạy, thời gian chạy kết hợp tất cả các phần này với chương trình . Liên kết tại thời gian biên dịch không còn cần nữa.

Nhưng đôi khi, nó vẫn là hữu ích để kết hợp tất cả các phần chương trình cần thực hiện thành một cụm duy nhất. Ví dụ: bạn có thể muốn để đơn giản hóa việc triển khai ứng dụng của bạn bằng cách kết hợp chương trình, tất cả thư viện bắt buộc và tất cả tài nguyên , vào một tệp .exe duy nhất.

csc /target:library /out:ClassLibrary1.dll ClassLibrary1.cs 
vbc /target:library /out:ClassLibrary2.dll ClassLibrary2.vb 
vbc /target:winexe /out:Program.exe 
    /reference:ClassLibrary1.dll,ClassLibrary2.dll Program.vb 

.

ilmerge /target:winexe /out:SelfContainedProgram.exe 
     Program.exe ClassLibrary1.dll ClassLibrary2.dll 
+0

Nhưng điều này tạo ra một tập tin EXE, không phải là một DLL (?) –

+1

cùng một điều nên được thực hiện với một dll như đầu ra - tôi đoán ... – JohnIdol

6

ILMerge có thể hợp nhất hai nhóm thành một.

Xem here để biết thông tin (ví dụ dành cho ngôn ngữ chéo, nhưng nó sẽ hoạt động bất kỳ công cụ nào được xây dựng cụm).

Rõ ràng là mọi phụ thuộc vào từng hội đồng (hợp nhất trước) sẽ cần được cập nhật/chuyển hướng.