2009-09-01 4 views
46

Bạn có thể giải thích một hội đồng trong C# hoặc .NET là gì?Chính xác là một hội trong C# hoặc .NET?

  1. Bắt đầu từ đâu và kết thúc ở đâu?
  2. Tôi cần biết thông tin quan trọng nào về Hội đồng?
+2

Nói đúng, không phải là một khái niệm .NET. Thay vì khái niệm C#? – JeffH

+2

@ JeffH: khi tôi hỏi câu hỏi tôi nghĩ đó là một khái niệm C#. Bây giờ tôi hiểu nó là một .NET. Tuy nhiên, vì tôi nghĩ rằng những người khác có thể bị nhầm lẫn như tôi, tôi cố tình không thay đổi nó để Google có thể chịu đựng sai lầm này ... –

+0

Một 'exe' hoặc' dll' –

Trả lời

65

Lắp ráp là đầu ra được biên dịch của mã của bạn, thường là một DLL, nhưng EXE của bạn cũng là một hội đồng. Đây là đơn vị triển khai nhỏ nhất cho bất kỳ dự án .NET nào.

assembly thường chứa mã .NET trong MSIL (ngôn ngữ Microsoft Intermediate) sẽ được biên dịch thành mã gốc ("JITted" - được biên dịch bởi trình biên dịch Just-In-Time) lần đầu tiên nó được thực hiện trên một máy đã cho . Mã được biên dịch đó cũng sẽ được lưu trữ trong assembly và được tái sử dụng trong các cuộc gọi tiếp theo.

Việc lắp ráp cũng có thể chứa các tài nguyên như biểu tượng, bitmap, bảng chuỗi, v.v. Hơn nữa, hội đồng cũng chứa siêu dữ liệu trong bản kê khai lắp ráp - thông tin như số phiên bản, tên mạnh, văn hóa, hội đồng tham chiếu và vv.

Trong 99% các trường hợp của bạn, một tập hợp bằng một tệp vật lý trên đĩa - trường hợp lắp ráp nhiều tệp (một assembly, được phân phối trên nhiều tệp) dường như là một trường hợp khá kỳ quặc mà tôi chưa bao giờ gặp phải trong 5 năm phát triển .NET của tôi.

Trong một hội đồng đa dạng, sẽ vẫn chỉ có một tệp kê khai trong một tệp DLL hoặc EXE và mã MSIL trong nhiều tệp netmodule.

+1

@marc_s: Tôi nghĩ bạn có nghĩa là đa tập tin lắp ráp. Có thể đóng gói nhiều assembly trong một tệp đơn thông qua các công cụ dòng lệnh của studio, nhưng không trực tiếp thông qua IDE. –

+4

Một điều rất quan trọng trong một hội đồng là siêu dữ liệu trong tệp kê khai assembly. Tệp kê khai có các thông tin như phiên bản, tên mạnh, văn hóa, các hội đồng tham chiếu vv. Trong một hội đồng đa dạng, sẽ chỉ có một tệp kê khai trong một tệp dll hoặc exe và mã MSIL trong nhiều tệp .netmodule. Về cơ bản một hội đồng là đơn vị triển khai tối thiểu trong> net – softveda

+0

@marc_s: Tôi sẽ đánh giá cao nếu bạn thêm điểm của @ Pratik vào câu trả lời, cảm ơn –

8

.NET assembly

Trong khuôn khổ Microsoft .NET, một lắp ráp là một biên soạn một phần đang thư viện để sử dụng trong việc triển khai, versioning và an ninh.

4

http://www.codeguru.com/columns/csharp_learning/article.php/c5845

lắp ráp An là một tập tin đó sẽ tự động được tạo ra bởi trình biên dịch khi biên dịch thành công của tất cả các ứng dụng .NET. Nó có thể là Thư viện liên kết động hoặc tệp thi hành. Nó được tạo ra chỉ một lần cho một ứng dụng và sau mỗi lần biên dịch tiếp theo, assembly được cập nhật.

+1

Các hội đồng khác biệt với các tệp có chứa chúng. –

+1

@Raghav - Cập nhật ảnh của bạn với một thứ gì đó bình thường vì trời! Chúng tôi không đặt ở đây cho hộ chiếu, bạn biết đấy! –

2

Here's khác giải thích về cấu tạo của .NET Assemblies, một mini-quote:

.NET Framework bao gồm các khái niệm về mô-đun, lắp ráp, mà cả cửa hàng và siêu dữ liệu manifest thông tin . Hội đồng có thể chứa nhiều mô-đun. Visual C# chỉ từng tạo ra một mô-đun mà được bật thành lắp ráp bởi các biên dịch C# (csc.exe), nhưng một hội đồng có thể liên kết nhiều mô-đun NET với nhau thông qua các dây chuyền lắp ráp mối liên kết (al.exe) lệnh dụng cụ. Ví dụ mỗi mã nguồn của bạn mã .cs tệp có thể được biên dịch thành một mô-đun và được liên kết với nhau để tạo thành một hội đồng - một hội đồng chỉ là tập hợp các mô-đun và tài nguyên. Tuy nhiên, một trong các mô-đun này phải chứa siêu dữ liệu tệp kê khai (xem bên dưới) thông tin cho hội đồng là được CLR hiểu.
....
Đã tạo một tệp .exe hoặc .dll mới bên trong VS.NET bạn thấy tệp của mình xuất hiện bên trong thư mục bin của bạn. Mở nó trong notepad sẽ phát ra vô nghĩa hoặc ngay cả bên trong trình chỉnh sửa thập lục phân mà không biết cấu trúc của tệp , bạn cần một công cụ như ildasm.exe hoặc trình thám hiểm CFF để tạo ý nghĩa từ . Cơ cấu của hội đồng là là như sau:

tiêu đề PE
tiêu đề CLR
CLR metadata
CLR
IL đang
dữ liệu Native

0

Khi một mã nguồn được biên soạn bởi các trình biên dịch ngôn ngữ nó tạo ra một Hội đồng quản trị và MSIL (Ngôn ngữ trung gian MisroSoft). Hội đồng đó chứa .dll hoặc .exe tập tin. Một Assebmly có thể có hai loại Hội đồng tư nhânHội đồng chia sẻ, được chia sẻ hội được lưu trữ trong GAC (Bộ nhớ lắp ráp toàn cầu) để bất kỳ ứng dụng nào có thể tham chiếu trong khi lắp ráp riêng được lưu trữ trong thư mục ứng dụng có thể được sử dụng bởi chỉ một Ứng dụng.

0

Hội đồng là một tệp DLL hoặc EXE sẽ được tạo khi bạn xuất bản hoặc biên dịch ứng dụng của mình.