学习单声道源代码

我有兴趣为单声道贡献一些东西,无论是文档还是什么。 作为第一步,我下载了源代码树以便浏览代码。 但是,我想如果有人会花足够的时间来理解那些能帮助每个人的项目结构。 有人指出项目结构得到了很好的解释吗?

注意:这不是问题https://stackoverflow.com/questions/1655090/mono-source-code-walkthrough-tutorial的重复,这个问题的答案不能满足我的期望。

你应该签出 ( 这里的 subversion结帐URL):

  • 行李箱/ libgdiplus

    这是System.Drawing使用的库。

  • 行李箱/单

    这就是我们所说的Mono 运行时 。 主要包含C源代码。 在此目录下,您可以找到:

    • data / :不同版本的一些配置文件(1.x,2.x,…)。
    • msvc * / :用于构建Mono运行时的Visual Studio解决方案文件。
    • libgc / :Boehm垃圾收集器来源。
    • mono / :Mono运行时源。
      • mini / :JIT源代码
      • metadata / :这些几乎是Mono运行时使用的所有函数(编组,线程池,套接字I / O,文件I / O,控制台I / O,应用程序域,GC,性能计数器……)。 它或多或少都是一个C文件。
      • util :杂项function。
      • io-layer / :Win32 I / O仿真function。
  • 行李箱/ MCS

    这是C#编译器, 类库 ,类库测试和其他工具的地方。

    • class / :每个程序集一个文件夹。 它们中的每一个都包含每个程序集的源代码,这些源代码分配在具有命名空间名称的目录中(即System / System.Configuration等),并且通常也是Test目录。 唯一的命名exception是mscorlib,其相应的文件夹名为corlib

      例如,如果要查看System.dll程序集中的System.Net.HttpWebRequest的源代码,请转到trunk / mcs / class / System / System.Net ,这里有一个名为HttpWebRequest的文件包含您正在寻找的代码的cs

    • mcs / :C#编译器的源代码(mcs,gmcs,smcs,dmcs ……)

    • tools / :这些是用于开发的一堆工具(sn,wsdl,…),文档(monodoc)等。大多数工具名称与MS相匹配。

周围有很多目录,但那些是你应该寻找C和C#代码的地方。 此外,我建议检查中继 ,因为您将获得最新的源。

更新: Mono现在驻留在github中 , mcs已集成到单声道存储库中。

Gonzalo对不同的模块进行了很好的概述。

既然您还提到了想要为文档做出贡献,那么您还需要更多信息。

首先,文档存储在mcs / class / [assembly] / Documentation /中的XML文件中,例如mcs / class / corlib / Documentation 。 目的是支持多种人类语言(虽然目前只处理英语),因此在Documentation中是一个语言目录,通常是en 。 在内部有ns-*.xml文件,例如mcs / class / corlib / Documentation / en / ns-System.xml包含System命名空间的文档。 同样在en是“dotted namespace”目录,并且在这些目录中是XML文件,每种类型一个,例如mcs / class / corlib / Documentation / en / System.Collections.Generic / IEnumerable`1.xml 。

这也在mdoc(5)文档中的FILE/DIRECTORY STRUCTURE部分中进行了概述。

找到文档后,您需要知道XML格式,该格式也在mdoc(5)文档中的NamespaceName/TypeName.xml File Format部分中有所描述。 使用的XML方言是ECMA 335 XML文档的变体,更改为每种类型有一个文件(而不是单个整体文件中的所有类型)。 这也是C#XML文档的超集(参见Annex E. Documentation Comments ,第487页)。

最后,还有一个问题是在mcs / class / [assembly] / Documentation目录中添加新的类型/成员。 如果您构建了Mono,则可以使用doc-update Makefile目标。 这将通过mdoc(1)运行适当的程序集并更新Documentation目录中的相应文件。

如果您有任何其他文档问题,请不要犹豫,在mono-docs-list邮件列表上询问。