2009-12-16 47 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邮件列表上。