学习单声道源代码

时间:2009-12-16 06:13:53

标签: c# mono open-source

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

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

2 个答案:

答案 0 :(得分:29)

您应该拥有checked out颠覆结帐网址here):

  • <强>躯干/ 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 :其他功能。
      • io-layer / :Win32 I / O仿真功能。
  • <强>躯干/ MCS

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

    • class / :每个程序集一个文件夹。它们中的每一个都包含在具有命名空间名称的目录中分割的每个程序集的源代码(即 System / System.Configuration 等),并且通常也是Test目录。唯一的命名例外是 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相匹配。< / LI>

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

更新:Mono现在位于github,而 mcs 已集成到 mono 存储库中。

答案 1 :(得分: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部分的mdoc(5)文档中也概述了这一点。

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

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

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