Изучение моно [закрытого] исходного кода

12
задан Community 23 May 2017 в 12:22
поделиться

2 ответа

У вас должны быть извлечены из ( subversion URL-адреса оформления заказа здесь ):

  • trunk / libgdiplus

    Это - это библиотека, используемая System.Drawing.

  • trunk / mono

    Это то, что мы называем средой выполнения Mono . Содержит в основном исходный код C. В этом каталоге вы можете найти:

    • data / : несколько файлов конфигурации для разных версий (1.x, 2.x, ...).
    • msvc * / : решение Visual Studio файлы для построения среды выполнения Mono.
    • libgc / : исходные коды сборщика мусора Boehm.
    • mono / : исходные коды среды выполнения Mono.
      • mini / : исходный код JIT
      • метаданные / : это почти все функции, используемые средой выполнения Mono (маршалинг, пул потоков, ввод-вывод сокетов, файловый ввод-вывод, консольный ввод / O, домены приложений, GC, счетчики производительности, ...). Это более или менее один файл C.
      • util : разные функции.
      • io-layer / : функции эмуляции ввода-вывода Win32.
  • trunk / mcs

    Здесь компилятор C #, библиотеки классов , тесты библиотек классов и другие инструменты:

    • class / : одна папка на сборку. Каждый из них содержит исходный код для каждой сборки, разделенной на каталоги с именем пространства имен (например, System / System.Configuration и т. Д.), А также обычно каталог Test. Единственное исключение именования - это mscorlib , соответствующая папка которого называется corlib .

      Например, если вы хотите увидеть исходный код для System.Net.HttpWebRequest ], который находится в сборке System.dll , перейдите в trunk / mcs / class / System / System.Net и там должен быть файл с именем HttpWebRequest.cs , содержащий искомый код.

    • mcs / : исходники для компиляторов C # (mcs, gmcs, smcs, dmcs ...)

    • tools / : это набор инструментов, используемых для разработки (sn, wsdl, ...), документации (monodoc) и т. д. Большинство названий инструментов совпадают с именами MS.

Вокруг гораздо больше каталогов, но именно там вы следует искать код C и C #. Также я предложил ствол для оформления заказа,

29
ответ дан 2 December 2019 в 04:33
поделиться

Гонсало предоставил хороший обзор различных модулей.

Поскольку вы также упомянули о своем желании внести свой вклад в документацию, вам понадобится еще несколько фрагментов информации.

Во-первых, документация. хранится в файлах XML в mcs / class / [assembly] / Documentation / , например, mcs / class / corlib / Documentation . Намерение состоит в том, чтобы поддерживать несколько человеческих языков (хотя в настоящее время разрабатывается только английский), поэтому в 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 .

Это также описано в документация mdoc (5) в разделе СТРУКТУРА ФАЙЛОВ / КАТАЛОГА .

После того, как вы нашли документацию, вам необходимо знать формат XML, который также описан в документацию mdoc (5) в разделе NamespaceName / TypeName.xml File Format . Используемый диалект XML представляет собой вариант ECMA 335 XML-документации , измененный на один файл для каждого типа (вместо всех типов в одном монолитном файле). Это также надмножество документации C # XML (см. Приложение E. Комментарии к документации , стр. 487).

Наконец, есть ' s вопрос о добавлении новых типов / членов в каталог mcs / class / [assembly] / Documentation . Если у вас собран Mono, вы можете использовать doc-update цель Makefile. Это запустит соответствующую сборку через mdoc (1) и обновит соответствующие файлы в каталоге Documentation .

Если у вас есть другие вопросы по документации, не стесняйтесь спрашивать в списке рассылки mono-docs-list .

4
ответ дан 2 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: