学习单声道源代码
我有兴趣为单声道贡献一些东西,无论是文档还是什么。 作为第一步,我下载了源代码树以便浏览代码。 但是,我想如果有人会花足够的时间来理解那些能帮助每个人的项目结构。 有人指出项目结构得到了很好的解释吗?
注意:这不是问题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邮件列表上询问。