Cấu trúc Assembly Một assembly thường bao gồm nhiều thành phần như:
•
Một Assembly metadata mô tả trọn vẹn assembly
•
Một Type Metadata mô tả các kiểu dữ liệu và các phương thức
•
Một MSIL code là đoạn mã viết theo ngôn ngữ trung gian
•
Các Resources là những tài nguyên như hình ảnh, chuỗi . . .
Được thể hiện như hình dưới đây : Hình trên đây chỉ gồm một file component.dll duy nhất, tất cả nằm trọn trong một
tâp tin.
Tuy nhiên một assembly cũng có thể trải dài trên nhiều tập tin mà ta gọi là multifile
assembly Ở hình dưới đây assembly được trải dài trên ba tập tin và ba tập tin kể trên hình
thành một assembly duy nhất. Metadata là gì ?
Metadata là thông tin được lưu trữ trên assembly mô tả những kiểu dữ liệu và
những phương thức thuộc assembly cung cấp những tin tức hữu ích khác liên quan đến
assembly .
Chính nhờ metadata nên các assembly thường được gọi là seft-describing (mô tả bản
thân) vì nó mô tả một cách trọn vẹn mỗi module.
Wrox.ProCSharp.Assemblies.CrossLanguage namespace. Chúng ta có thể thấy the
version number, và thuộc tính assembly ngay khi mở assemblies và versions của chúng.
Mở phương thức của lớp , chúng ta có thể thấy đ
uợc đoạn mã MSIL
ildasm Symbols
Các kí hiệu được sử dụng với ildasm trình bày dưới đây:
Symbol Description
Biểu diễn một namespace.
Biểu diễn một kiểu tham chiếu một lớp.Tương tự các ký hiệu được
sử dụng bởi các kiểu giá trị, nó có màu sáng
Biểu diễn một phương thức nhận và thiết lập các accessors của
một thuộc tính; "S" trong đồ hoạ có nghĩa là phương thức tĩnh
Biểu diễn một trường
Biểu diễn một sự kiện
Biểu diễn một thuộc tính
Có nghĩa là có nhiều thông tin có giá trị như thông tin manifest
hoặc thông tin về miêu tả một lớp
Xây dựng (Building Assemblies)
Chúng ta vừa biết được assembly tiếp theo chúng ta biết cách để xây dụng chúng.
chúng ta sẽ xây dựng xuyên suốt bời vì .NET có khả năng thi hành assembly phức
tạp.nhưng chúng ta hãy xem trường hợp cụ thể cho assemblies.
là phần assembly manifest;
Mục đ
ích của modules là cái gì? Modules có thể giúp khởi động nhanh
hơn assemblies bởi vì không phải tất cả ở trong một file đơn lẻ. modules chỉ kích hoạt
khi cần. Một lí do khác của modules là nếu bạn muốn tạo 1 assembly với nhiều hơn 1
ngôn ngữ lập trình; một module có thể được viết sử dụng VB.NET, module khác sử
dụng C#,và cả hai modules có thể được chứa trong 1 assembly đơn lẻ.
Tạo Assemblies sử dụng Visual Studio .NET
Như vừa đề c
ập tất cả loại dự án (project types) trong Visual Studio .NET tạo
assemblies. Với Visual Studio .NET 7.0 chúng không hổ trợ để tạo thư mục modules.
Khi tạo một Visual Studio .NET project, Nguồn file AssemblyInfo.cs được sinh ra
một cách tự động. Chúng ta sử dụng sourcecode bình thường soạn thảo để cấu hình
assembly thuộc tính file này. Đây là file được sinh ra từ wizard:
using System.Reflection;
using System.Runtime.CompilerServices;
//