Справочные префиксы в документации .NET XML

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

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


person Noldorin    schedule 22.04.2009    source источник


Ответы (1)


Похоже, это был ошибка в замке из песка

Какую версию песочного замка вы используете?

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

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

person ShuggyCoUk    schedule 25.04.2009
comment
Ах, хорошая находка. Однако странно, что это, возможно, исправили. Я использую последнюю (май 2008 г.) версию Sandcastle с патчем от sandcastlestyles.codeplex.com. - person Noldorin; 25.04.2009
comment
Действительно, похоже, что компилятор автоматически добавляет префикс (а также полностью определяет ссылочное имя). Я провел еще немного тестов, и проблема, похоже, заключалась в том, что если вы включите префикс, вы также должны полностью указать тип namne, иначе ссылка не будет иметь никакого смысла. В заключение, кажется, я могу избежать использования префиксов в коде во всех случаях. (Поправьте меня, если я ошибаюсь.) В любом случае спасибо за ответ! - person Noldorin; 25.04.2009
comment
Я думаю, что единственный раз, когда вам нужно использовать конкретную аннотированную форму, это когда возникает конфликт имен (что-то действительно неприятное, например: class Bar: ICloneable {public object Clone; object ICloneable.Clone () {}} Я бы не стал ' Не думаю, что вам нужно будет использовать это часто, если вообще когда-либо. - person ShuggyCoUk; 26.04.2009