2009-12-16 20 views
11

Estoy interesado en contribuir con algo en mono ya sea una documentación o lo que sea. Como primer paso, descargué el árbol de fuentes para examinar el código. Sin embargo, pensé que si alguien hubiera pasado suficiente tiempo para entender la estructura del proyecto que ayudaría a todos aquí. ¿Alguien me señala dónde está bien explicada la estructura del proyecto?Learning Mono Source Code

NOTA: Esto no es un duplicado de la pregunta https://stackoverflow.com/questions/1655090/mono-source-code-walkthrough-tutorial, la respuesta a esta pregunta no es suficiente.

Respuesta

28

Debe tener checked out (subversión URL de pago y envío here):

  • tronco/libgdiplus

    Ésta es una biblioteca usada por System.Drawing.

  • tronco/mono

    Esto es lo que llamamos el tiempo de ejecución Mono . Contiene principalmente el código fuente C. Bajo este directorio se puede encontrar:

    • datos/: algunos archivos de configuración de versión diferente (1.x, 2.x, ...).
    • msvc */: archivos de solución Visual Studio para compilar el tiempo de ejecución Mono.
    • libgc/: las fuentes Boehm Garbage Collector.
    • mono/: fuentes de tiempo de ejecución mono.
      • Mini/: JIT código fuente
      • metadatos/: estos son casi todas las funciones utilizadas por el tiempo de ejecución Mono (cálculo de referencias, grupo de subprocesos, Toma de E/S, archivo de E/S, la consola I/O, dominios de aplicación, GC, contadores de rendimiento, ...). Es más o menos un archivo C cada uno.
      • util: miscellaneous functions.
      • io-layer/: funciones de emulación de E/S de Win32.
  • tronco/mcs

    Aquí es donde el compilador de C#, las bibliotecas de clases , pruebas de bibliotecas de clases y otras herramientas son.

    • clase/: Una carpeta por conjunto. Cada uno de ellos contiene el código fuente de cada ensamblado dividido en directorios con el nombre del espacio de nombres (es decir, System/System.Configuration, etc.) y generalmente también un directorio de prueba.La única excepción de nomenclatura es mscorlib cuya carpeta correspondiente se llama corlib.

      Por ejemplo, si desea ver el código fuente para System.NET.HttpWebRequest, que se encuentra en la AsambleaSystem.dll, vas a tronco/mcs/clase/Sistema/System.Net y debe haber un archivo llamado HttpWebRequest.cs que contiene el código que está buscando.

    • mcs/: Las fuentes de los compiladores de C# (MCS, GMCs, SMC, DMCs ...)

    • herramientas/: son un grupo de herramientas que se utilizan para el desarrollo (sn, WSDL , ...), documentación (monodoc), etc. La mayoría de los nombres de herramientas coinciden con los de MS.

Hay muchos más directorios alrededor, pero esos son donde se debe buscar el código C# y C. Además, sugerí troncal para el pago, ya que obtendrá las fuentes más actualizadas de esa manera.

Actualización: Mono reside ahora en github y mcs se ha integrado en el mono repositorio.

+0

Muchas gracias por describir la estructura del directorio, ¿sabe también si hay un sitio web que describa esto? – markmnl

+0

Hay https://github.com/mono/mono/blob/master/README.md – Gonzalo

4

Gonzalo proporcionó una buena visión general de los diferentes módulos.

Como también mencionó que desea contribuir a la documentación, querrá algunos datos más.

Primero, la documentación se almacena en archivos XML dentro de mcs/class/[assembly]/Documentation/, p. Ej. mcs/class/corlib/Documentation. La intención es admitir varios idiomas humanos (aunque actualmente solo se está trabajando en inglés), por lo que dentro de Documentación es un directorio de idiomas, generalmente en. Dentro de en hay ns-*.xml archivos, p. mcs/class/corlib/Documentation/en/ns-System.xml contiene documentación para el espacio de nombre System. También dentro de en se encuentran los directorios de "espacio de puntos punteados", y dentro de ellos hay archivos XML, uno por tipo, por ejemplo mcs/class/corlib/Documentation/en/System.Collections.Generic/IEnumerable`1.xml.

Esto también se describe en la documentación mdoc(5), en la sección FILE/DIRECTORY STRUCTURE.

Una vez que haya encontrado la documentación, necesita conocer el formato XML, que también se describe en la documentación mdoc(5), en la sección NamespaceName/TypeName.xml File Format. El dialecto XML utilizado es una variante del ECMA 335XML documentation, modificado para tener un archivo por tipo (en lugar de todos los tipos dentro de un único archivo monolítico). Este también es un superconjunto de C# XML documentation (ver Annex E. Documentation Comments, página 487).

Finalmente, está la cuestión de agregar nuevos tipos/miembros al directorio mcs/class/[assembly]/Documentation. Si tiene Mono incorporado, puede usar el objetivo de Makefile doc-update.Esto ejecutará el ensamblado apropiado a través del mdoc(1) y actualizará los archivos apropiados dentro del directorio Documentation.

Si tiene alguna otra pregunta sobre la documentación, no dude en preguntar en la lista de correo mono-docs-list.