2009-12-16 23 views
11

Tôi quan tâm đến việc đóng góp một cái gì đó để đơn sắc cho dù đó là một tài liệu hoặc những gì bao giờ hết. Bước đầu tiên, tôi đã tải xuống cây nguồn để xem mã. Tuy nhiên, tôi nghĩ nếu một số người sẽ dành đủ thời gian để hiểu cấu trúc dự án sẽ giúp mọi người ở đây. Bất kỳ một điểm tôi ra nơi cấu trúc dự án cũng được giải thích?Học Mono Mã nguồn

LƯU Ý: Đây không phải là bản sao câu hỏi https://stackoverflow.com/questions/1655090/mono-source-code-walkthrough-tutorial, câu trả lời cho câu hỏi này không đủ cho kỳ vọng của tôi.

Trả lời

28

Bạn nên có checked out (lật đổ URL thanh toán here):

  • trunk/libgdiplus

    Đây là một thư viện được sử dụng bởi System.Drawing.

  • trunk/mono

    Đây là những gì chúng ta gọi là Mono runtime. Chứa chủ yếu là mã nguồn C. Dưới thư mục này bạn có thể tìm thấy:

    • dữ liệu/: một vài tập tin cấu hình cho phiên bản khác nhau (1.x, 2.x, ...).
    • msvc */: Tệp giải pháp Visual Studio để tạo thời gian chạy Mono.
    • libgc/: Nguồn thu gom Boehm Garbage Collector.
    • mono/: Nguồn thời gian chạy đơn.
      • mini/: JIT mã nguồn
      • metadata/: đây là hầu hết tất cả các chức năng được sử dụng bởi thời gian chạy Mono (marshaling, bơi thread, ổ cắm I/O, tập tin I/O, giao diện điều khiển tôi/O, miền ứng dụng, GC, bộ đếm hiệu suất, ...). Mỗi tệp C có ít nhất một tệp.
      • util: các hàm khác.
      • io-layer/: Hàm mô phỏng I/O Win32.
  • trunk/mcs

    Đây là nơi các biên dịch C#, các thư viện lớp, lớp thư viện kiểm tra và các công cụ khác đang có.

    • lớp/: Một thư mục mỗi lắp ráp. Mỗi người trong số họ chứa mã nguồn cho mỗi phân chia tách trong thư mục với tên không gian tên (tức là, Hệ thống/System.Configuration và vv) và thường là một thư mục kiểm tra quá.Ngoại lệ đặt tên duy nhất là mscorlib có thư mục tương ứng được gọi là corlib.

      Ví dụ, nếu bạn muốn xem mã nguồn cho System.Net.HttpWebRequest, mà là trong lắp ráp System.dll, bạn đi đến trunk/mcs/lớp/System/System.Net và có một tệp có tên là HttpWebRequest.cs chứa mã bạn đang tìm kiếm.

    • mcs/: nguồn cho C# trình biên dịch (MCs, gmcs, smcs, DMCs ...)

    • công cụ/: đây là một loạt các công cụ được sử dụng để phát triển (sn, wsdl , ...), tài liệu (monodoc), vv Hầu hết các tên công cụ phù hợp với các tên MS.

Có rất nhiều thư mục xung quanh, nhưng đó là nơi bạn nên tìm kiếm các mã C và C#. Ngoài ra, tôi đã đề xuất trunk để thanh toán, vì bạn sẽ nhận được các nguồn cập nhật mới nhất theo cách đó.

Cập nhật: Mono bây giờ nằm ​​trong githubmcs đã được tích hợp vào mono kho.

+0

Cảm ơn bạn rất nhiều vì đã mô tả cấu trúc thư mục, bạn có biết liệu có một trang web mô tả điều này không? – markmnl

+0

Có https://github.com/mono/mono/blob/master/README.md – Gonzalo

4

Gonzalo cung cấp tổng quan tốt về các mô-đun khác nhau.

Vì bạn cũng đã đề cập muốn đóng góp vào tài liệu, bạn sẽ muốn thêm một vài thông tin nữa.

Đầu tiên, Tài liệu được lưu trữ trong các tệp XML trong vòng mcs/lớp/[assembly]/Tài liệu/, ví dụ: mcs/class/corlib/Documentation. Mục đích là để hỗ trợ nhiều ngôn ngữ của con người (mặc dù chỉ có tiếng Anh hiện đang được thực hiện), vì vậy trong vòng Tài liệu là một thư mục ngôn ngữ, thường là en. Trong phạm vi en có các tệp ns-*.xml, ví dụ: mcs/class/corlib/Documentation/en/ns-System.xml chứa tài liệu cho không gian tên System. Cũng trong các thư mục en là các thư mục "không gian tên phân tán" và trong đó là các tệp XML, một tệp cho mỗi loại, ví dụ: mcs/class/corlib/Documentation/en/System.Collections.Generic/IEnumerable`1.xml.

Điều này cũng được nêu trong tài liệu mdoc(5), trong phần FILE/DIRECTORY STRUCTURE.

Khi bạn đã tìm thấy tài liệu, bạn cần biết định dạng XML, cũng được mô tả trong tài liệu mdoc(5), trong phần NamespaceName/TypeName.xml File Format. Phương ngữ XML được sử dụng là một biến thể của ECMA 335XML documentation, được thay đổi thành có một tệp cho mỗi loại (thay vì tất cả các loại trong một tệp nguyên khối duy nhất). Đây cũng là một bộ siêu của C# XML documentation (xem Annex E. Documentation Comments, trang 487).

Cuối cùng, có câu hỏi về việc thêm các loại/thành viên mới vào thư mục mcs/class/[assembly]/Tài liệu. Nếu bạn đã xây dựng Mono, bạn có thể sử dụng mục tiêu Makefile doc-update.Thao tác này sẽ chạy hội đồng thích hợp thông qua mdoc(1) và cập nhật các tệp thích hợp trong thư mục Tài liệu.

Nếu bạn có bất kỳ câu hỏi nào về tài liệu khác, vui lòng hỏi trên danh sách gửi thư mono-docs-list.