我有兴趣为单声道贡献一些东西,无论是文档还是什么。作为第一步,我下载了源代码树以便浏览代码。但是,我想如果有人会花足够的时间来理解那些可以帮助每个人的项目结构。有人指出我的项目结构得到了很好的解释吗?
注意:这不是问题https://stackoverflow.com/questions/1655090/mono-source-code-walkthrough-tutorial的重复,这个问题的答案不足以满足我的期望。
答案 0 :(得分:29)
您应该拥有checked out(颠覆结帐网址here):
<强>躯干/ libgdiplus 强>
这是System.Drawing使用的库。
<强>躯干/单强>
这就是我们所说的Mono 运行时。主要包含C源代码。在此目录下,您可以找到:
<强>躯干/ 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 ......)
周围有很多目录,但那些应该是你应该寻找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邮件列表上询问。