2009-12-16 13 views
11

Sono interessato a contribuire a qualcosa di mono se si tratta di una documentazione o cosa mai. Come primo passo, ho scaricato l'albero dei sorgenti per passare attraverso il codice. Tuttavia, ho pensato che qualcuno avrebbe speso abbastanza tempo per capire la struttura del progetto che avrebbe aiutato tutti qui. Qualcuno mi indica dove la struttura del progetto è ben spiegata?Learning Mono Source Code

NOTA: questo non è un duplicato della domanda https://stackoverflow.com/questions/1655090/mono-source-code-walkthrough-tutorial, la risposta a questa domanda non è sufficiente alle mie aspettative.

risposta

28

Si dovrebbe avere checked out (sovversione URL checkout here):

  • tronco/libgdiplus

    Si tratta di una libreria utilizzata da System.Drawing.

  • tronco/mono

    Questo è ciò che noi chiamiamo il Mono runtime. Contiene principalmente codice sorgente C. In base a questo elenco si possono trovare:

    • dati/: un paio di file di configurazione per la versione diversa (1.x, 2.x, ...).
    • msvc */: file di soluzione di Visual Studio per creare il runtime Mono.
    • libgc/: le fonti di Boehm Garbage Collector.
    • mono/: Mono sorgenti di runtime.
      • mini/: JIT codice sorgente
      • metadati/: questi sono quasi tutte le funzioni utilizzate dal runtime Mono (marshalling, pool di thread, socket di I/O, file di I/O, console mi/O, domini applicativi, GC, contatori delle prestazioni, ...). È più o meno un file C ciascuno.
      • util: funzioni varie.
      • io-layer/: funzioni di emulazione di I/O Win32.
  • tronco/mcs

    Questo è dove il compilatore C#, le librerie di classi , prove di librerie di classi e di altri strumenti sono.

    • classe/: Una cartella per gruppo. Ciascuno di essi contiene il codice sorgente per ciascun gruppo suddiviso in directory con il nome del namespace (ad esempio, System/System.Configuration e così via) e in genere anche una directory di test.L'unica eccezione di denominazione è mscorlib la cui cartella corrispondente è denominata corlib.

      Per esempio, se si desidera visualizzare il codice sorgente per System.Net.HttpWebRequest, che si trova nel assemblaggio System.dll, si va a trunk/mcs/classe/System/System.Net e potrebbe esserci un file denominato HttpWebRequest.cs contenente il codice che stai cercando.

    • mcs/: le fonti per la C# compilatori (MCS, GMC, SMC, DMC ...)

    • strumenti/: questi sono un sacco di strumenti utilizzati per lo sviluppo (sn, WSDL , ...), documentazione (monodoc), ecc. La maggior parte dei nomi degli strumenti corrisponde a quelli degli MS.

Ci sono un sacco più directory in giro, ma questi sono dove si dovrebbe cercare il C e C# codice. Inoltre, ho suggerito trunk per il checkout, dal momento che otterrete le fonti più aggiornate in questo modo.

Aggiornamento: Mono ora risiede in github e mcs è stato integrato nella repository mono.

+0

Grazie mille per aver descritto la struttura delle directory, sapete anche se esiste un sito web che lo descrive? – markmnl

+0

C'è https://github.com/mono/mono/blob/master/README.md – Gonzalo

4

Gonzalo ha fornito una buona panoramica dei diversi moduli.

Dato che hai anche menzionato il desiderio di contribuire alla documentazione, ti serviranno altre informazioni.

Innanzitutto, la documentazione è memorizzata in file XML entro mc/classe/[assemblaggio]/documentazione/, ad es. mcs/class/corlib/Documentation. L'intento è quello di supportare più lingue umane (anche se attualmente è in lavorazione solo l'inglese), quindi all'interno della documentazione la documentazione è una directory di lingua, solitamente en. All'interno di en ci sono i file ns-*.xml, ad es. mcs/class/corlib/Documentation/en/ns-System.xml contiene la documentazione per lo spazio dei nomi System. Anche all'interno di en ci sono le directory "namespace punteggiato" e all'interno di questi ci sono file XML, uno per tipo, ad esempio mcs/class/corlib/Documentation/en/System.Collections.Generic/IEnumerable`1.xml.

Questo è anche descritto nella documentazione mdoc(5), nella sezione FILE/DIRECTORY STRUCTURE.

Una volta trovata la documentazione, è necessario conoscere il formato XML, che è anche descritto nella documentazione mdoc(5), nella sezione NamespaceName/TypeName.xml File Format. Il dialetto XML utilizzato è una variante di ECMA 335XML documentation, modificata per avere un file per tipo (anziché tutti i tipi all'interno di un singolo file monolitico). Questo è anche un superset di C# XML documentation (vedere Annex E. Documentation Comments, pagina 487).

Infine, c'è la domanda di aggiungere nuovi tipi/membri alla directory mcs/class/[assembly]/Documentation. Se hai creato Mono, puoi utilizzare il target Makefile doc-update.Ciò eseguirà l'assembly appropriato tramite mdoc(1) e aggiornerà i file appropriati all'interno della directory Documentazione.

Se avete altre domande sulla documentazione, non esitate a chiedere sulla mailing list mono-docs-list.