2009-04-22 4 views
2

Я пытаюсь полностью документировать все типы, методы, свойства и т. Д. Библиотеки классов, используя комментарии XML, но столкнулся с любопытным эффектом, связанным с атрибутом cref (используется тегами see например). Судя по совету this MSDN page, а также следующий различные другие примеры на MSDN и других веб-сайтах, кажется, что всякий раз, когда один задает эталонное значение, используя cref тега, он должен иметь префикс с определенным маркером, который классифицирует refence (например, «T : 'для типа и' M: 'для метода).Справочные префиксы в документации XML XML

Использование Microsoft Sandcastle, однако, я заметил, что, упустив эти префиксы, в сгенерированной документации есть эффект (файл справки CHM в этом случае). В том числе префиксы (во всех ситуациях, которые я верю), ссылка отображается на странице в виде жирного текста ... Однако, сохраняя префикс, ссылка отображается как привязка (ссылка) к соответствующей странице в ссылке API. Мне кажется довольно странным, что рекомендуемый метод префикса (все?) Ссылки дает наименее полезный результат - почему эта ссылка должна быть выделена жирным шрифтом в одном случае и связана с другим? Я был бы признателен, если бы кто-то мог пролить свет на это.

ответ

2

Это, как представляется, был bug in sandcastle

Какой версии Сандкаслы вы используете?

Сообщалось, что, как минимум, для типов систем, предлагаемый метод заключается в том, чтобы фактически избежать использования квалифицированных имен, поскольку примеры, поставленные в этом ответе, упали на T: и M: полностью Ваша путаница поэтому не является неожиданностью или редко.

This documentation настоятельно предполагает, что компилятор, где он может определить, какой тип/метод/константа вы указываете, вставляет вам префиксы. Вы проверили это в xml?

+0

Ах, хорошо найти. Странно, однако, что это, вероятно, было исправлено. Я использую последнюю (май 2008) версию Sandcastle с патчем от http://sandcastlestyles.codeplex.com/. – Noldorin

+0

Действительно, похоже, что компилятор автоматически добавляет префикс (а также полностью определяет ссылочное имя). Я сделал немного больше тестирования, и проблема заключалась в том, что если вы включаете префикс, вы также должны полностью квалифицировать тип namne, или ссылка не имеет смысла. В заключение кажется, что во всех случаях я могу избежать использования префиксов в коде. (Исправьте меня, если я ошибаюсь.) В любом случае, спасибо за ответ! – Noldorin

+0

Я бы подумал, что единственный раз, когда вам нужно будет использовать конкретную аннотированную форму, возникает столкновение имен (что-то действительно противное: класс Bar: ICloneable {public object Clone; object ICloneable.Clone() {}} Я бы не подумал, что вам нужно будет использовать это часто, если когда-либо. – ShuggyCoUk