У меня есть лучший ответ: FiXml .
Клонирование комментариев с помощью GhostDoc, безусловно, рабочий подход, но он имеет существенные недостатки, например:
- При изменении исходного комментария (что часто происходит во время разработки),
его клона нет.
- Вы производите огромное количество дубликатов. Если вы используете какой-либо
инструменты анализа исходного кода (например, Duplicate Finder в Team City), он будет
найти в основном ваши комментарии.
Краткое описание FiXml: это постпроцессор документации XML, созданный C # \ Visual Basic .Net. Он реализован как задача MSBuild, поэтому его легко интегрировать в любой проект. В нем рассматриваются несколько досадных случаев, связанных с написанием документации XML на следующих языках:
- Нет поддержки наследования документации от базового класса или интерфейса. Т.е. документация для любого переопределенного члена должна быть написана с нуля, хотя обычно очень желательно наследовать хотя бы ее часть.
- Нет поддержки для вставки часто используемых шаблонов документации , таких как «Этот тип является одиночным - используйте его свойство
<see cref="Instance" />
, чтобы получить единственный его экземпляр»., Или даже «Инициализирует новый экземпляр <CurrentType>
класса. ”
Для решения указанных проблем предусмотрены следующие дополнительные теги XML:
<inheritdoc />, <inherited />
теги
<see cref="..." copy="..." />
атрибут в теге <see/>
.
Вот его веб-страница и страница загрузки (неработающие ссылки).
Наконец, есть тег <inheritdoc>
в Sandcastle - его определенно лучше использовать, чем копировать комментарии XML, но он имеет несколько недостатков по сравнению с FiXml:
- Sandcastle создает скомпилированные файлы справки HTML - он не изменяет
.xml
файлы
содержащий извлеченные комментарии XML. Но эти файлы используются многими инструментами,
включая .NET Reflector и браузер классов \ IntelliSense в Visual Studio .NET.
Поэтому, если вы используете только Sandcastle, вы не увидите там унаследованной документации.
- Реализация Sandcastle менее мощная. Например. нет
<see ... copy="true" />
.
Подробнее см. Sandcastle <inheritdoc>
.