2009-12-16 82 views
11

我有興趣爲單聲道做出貢獻,無論是文檔還是以往。作爲第一步,我下載了用於瀏覽代碼的源代碼樹。然而,我想如果有人會花足夠的時間來了解項目結構,這將有助於這裏的每個人。任何一點我可以看出項目結構在哪裏得到了很好的解釋?學習單聲道源代碼

注意:這不是問題https://stackoverflow.com/questions/1655090/mono-source-code-walkthrough-tutorial的重複,這個問題的答案不足以我的期望。

回答

28

你應該有checked out顛覆結賬網址here):

  • 主幹/ libgdiplus

    這是System.Drawing中使用的庫。

  • 主幹/單

    這就是我們所說的單運行。主要包含C源代碼。在該目錄下你可以找到:

    • 數據/:對於不同版本的一些配置文件(1.x中,2.X,...)。
    • msvc */:用於構建Mono運行時的Visual Studio解決方案文件。
    • libgc/:Boehm Garbage Collector來源。
    • mono/:單聲道運行時間源。
      • 迷你/:JIT源代碼
      • 元數據/:這些幾乎都是由單聲道運行時(編組,線程池,套接字I/O,文件I/O,控制檯I中使用的函數/ O,應用程序域,GC,性能計數器...)。它或多或少都是一個C文件。
      • util:其他功能。
      • io-layer/:Win32 I/O仿真功能。
  • 軀幹/ MCS

    這是C#的編譯器,類庫,類庫測試和其它工具。

    • 類/:每一個裝配夾。它們中的每一個都包含每個程序集的源代碼,這些程序集在名稱空間名稱的目錄中拆分(即,System/System.Configuration等等),通常也是一個Test目錄。唯一的命名異常是的mscorlib,其相應的文件夾名爲corlib

      例如,如果你想看到System.Net.HttpWebRequest的源代碼,這是在System.dll中組裝,你去主幹/ MCS /班/系統/ System.Net有shoould是一個名爲HttpWebRequest.cs包含你正在尋找的代碼文件。

    • MCS/:對於C#編譯器的源(MCS,系膜細胞,平滑肌細胞,公契...)

    • 工具/:這些都是一堆用於開發工具(SN,WSDL ,...),文檔(monodoc)等。大多數工具名稱都與MS相匹配。

有很多更多的目錄左右,但這些都是你應該尋找C和C#代碼。另外,我建議中繼線用於結帳,因爲您將以這種方式獲得最新的資源。

更新:單現居githubMCS已經融入了庫。

+0

非常感謝您描述目錄結構,您是否知道是否有一個網站描述這個? – markmnl 2015-01-21 00:38:31

+0

有https://github.com/mono/mono/blob/master/README.md – Gonzalo 2015-01-21 09:00:24

4

的Gonzalo提供的不同模塊的一個很好的概述。

既然你也提到希望有助於文檔,你會想一些更多的信息。首先,將文檔存儲在mcs/class/[assembly]/Documentation/內的XML文件中,例如, mcs/class/corlib/Documentation。目的是支持多種人類語言(儘管目前只有英文正在製作中),因此在文檔是一個語言目錄,通常是en。在en之內有ns-*.xml文件,例如, mcs/class/corlib/Documentation/en/ns-System.xml包含System命名空間的文檔。同樣在en之內的是「虛線名稱空間」目錄,其中包括XML文件,每個類型一個,例如mcs/class/corlib/Documentation/en/System.Collections.Generic/IEnumerable`1.xml

這也概述的​​文檔內,在FILE/DIRECTORY STRUCTURE部分。

一旦你找到的文件,你需要知道的XML格式,這也是​​文檔中描述,在NamespaceName/TypeName.xml File Format部分。使用的XML方言是ECMA 335XML documentation的變體,更改爲每個類型具有一個文件(而不是單個單一文件中的所有類型)。這也是C# XML documentation的超集(參見,第487頁)。

最後,還有一個將新類型/成員添加到mcs/class/[assembly]/Documentation目錄的問題。如果您構建了Mono,則可以使用doc-update Makefile目標。這將通過mdoc(1)運行相應的程序集並更新文檔目錄中的相應文件。

如果您有任何其他文件有任何疑問,請不要猶豫,問mono-docs-list郵件列表上。