Trong .net sự khác biệt giữa một lắp ráp và mô-đun là một module không chứa manifest.
//Copied from CLR via C#
là gì manifest?
Tệp kê khai là một bộ khác gồm bảng siêu dữ liệu về cơ bản chứa tên của các tệp là một phần của hội đồng. Họ cũng mô tả phiên bản, văn hóa, nhà xuất bản, loại được xuất công khai của hội đồng và tất cả các tệp mà bao gồm lắp ráp.
CLR hoạt động trên các cụm; nghĩa là, CLR luôn tải tệp có chứa các bảng siêu dữ liệu manifest trước rồi sử dụng tệp kê khai để lấy tên của các tệp/mô-đun khác trong assembly.
Cách kết hợp các mô-đun để tạo thành một hội?
Sử dụng biên dịch C#
Để hiểu làm thế nào để xây dựng một multifile/multimodule lắp ráp, hãy giả sử rằng chúng ta có file mã hai nguồn:
■■ RUT.cs, mà chứa ít được sử dụng các loại
■■ FUT.cs, chứa các loại được sử dụng thường xuyên
Hãy biên dịch các loại hiếm khi được sử dụng o mô-đun riêng của họ để người dùng lắp ráp sẽ không cần để triển khai mô-đun này nếu họ không bao giờ truy cập các loại hiếm khi được sử dụng.
csc /t:module RUT.cs
Dòng này làm trình biên dịch C# tạo tệp RUT.netmodule. Tệp này là tệp DLL PE chuẩn, nhưng, bản thân nó, CLR không thể tải tệp đó. Tiếp theo, hãy biên soạn các loại được sử dụng thường xuyên thành mô-đun riêng của chúng. Chúng tôi sẽ làm cho mô-đun này là người giữ bản kê khai của hội đồng vì các loại được sử dụng thường xuyên. Thực tế, vì mô-đun này giờ đây sẽ đại diện cho toàn bộ hội đồng, tôi sẽ thay đổi tên của tệp đầu ra thành MultiFileLibrary.dll thay vì gọi nó là FUT.dll.
csc /out:MultiFileLibrary.dll /t:library /addmodule:RUT.netmodule FUT.cs
Dòng này yêu cầu trình biên dịch C# biên dịch tệp FUT.cs để tạo tệp MultiFileLibrary.dll. Bởi vì /t: thư viện được chỉ định, tệp DLL PE chứa bảng siêu dữ liệu tệp kê khai được phát ra vào tệp MultiFileLibrary.dll. Công tắc /addmodule:RUT
.netmodule cho trình biên dịch biết rằng RUT.netmodule là một tệp cần được coi là một phần của hội đồng. Cụ thể, khóa chuyển đổi /addmodule
yêu cầu trình biên dịch thêm tệp vào bảng siêu dữ liệu tệp kê khai FileDef và thêm các loại xuất công khai của RUT.netmodule vào bảng siêu dữ liệu tệp kê khai ExportedTypesDef.
Sau khi trình biên dịch hoàn thành tất cả quá trình xử lý, hai tệp được hiển thị trong Hình 2-1 được tạo. Mô-đun bên phải chứa tệp kê khai.
Sử dụng Linker hội
Tiện ích AL.exe có thể sản xuất một EXE hoặc một file PE DLL chỉ chứa một biểu hiện mô tả loại trong module khác. Để hiểu cách AL.exe hoạt động, hãy thay đổi cách lắp ráp MultiFileLibrary.dll.
csc /t:module RUT.cs
csc /t:module FUT.cs
al /out: MultiFileLibrary.dll /t:library FUT.netmodule RUT.netmodule
Hình 2-3 cho thấy các tệp kết quả từ việc thực hiện các câu lệnh này.
tôi sẽ đề nghị bạn đọc CHƯƠNG 2: Xây dựng, bao bì, Triển khai, và Ứng dụng Quản lý và loại từ CLR thông qua C# bởi Jeffrey Richter để hiểu được khái niệm một cách chi tiết.
bản sao có thể có của [Mô-đun trong .NET là gì?] (Http://stackoverflow.com/questions/645728/what-is-a-module-in-net) –