Ссылка на веб-сайт документации C # XML


156

Можно ли включить ссылку на веб-сайт в XML-документацию? Например, мой метод резюмирован как

///<Summary>
/// This is a math function I found HERE.
///</Summary>
public void SomeMathThing(Double[] doubleArray)
{
   ...
}

и когда я печатаю

SomeMathThing(

Я хочу, чтобы IntelliSense отображал сводку с возможностью щелкнуть «ЗДЕСЬ», чтобы перейти на внешний веб-сайт. Это возможно? Как бы это сделать?


Ответы:


165

Пытаться:

///<Summary>
/// This is a math function I found <see href="http://stackoverflow.com">HERE</see>
///</Summary>

7
Боюсь, не повезло. Он даже не отображал «ЗДЕСЬ».
Джон

5
Хммм, мои извинения. Я провел еще немного исследований (см. Здесь и здесь ) - и похоже, что VS IDE не будет отображать эти гиперссылки, но инструмент документации, такой как SandCastle, сможет их отобразить.
dizzwave 05

2
Вы можете прочитать про Sandcastle здесь, кстати. «Sandcastle, созданный Microsoft, - это бесплатный инструмент, используемый для создания документации в стиле MSDN из сборок .NET и связанных с ними файлов комментариев XML. Он основан на командной строке и не имеет интерфейса GUI, функций управления проектами или автоматизированного процесс сборки ". HTH!
dizzwave

1
Обратите внимание, что поддержка <see /> в качестве тега содержимого может варьироваться. Я обнаружил, что это немного более согласованно, когда используется как самозакрывающийся тег, просто отображающий необработанный URL-адрес. (Что в любом случае лучше документации: поскольку "ЗДЕСЬ" не дает подробных объяснений.)
gremlin

5
Это работает в VS 16.4.2. Не уверен, какая версия была добавлена, только теперь вы можете щелкать ссылки в информационном окне метода.
JB06,

72

Немного поздно в шумихе, но вот что я узнал о Visual Studio 2015.

Мой образец выглядит так:

    /// <summary>
    ///     Retrieves information about the specified window. 
    ///     The function also retrieves the value at a specified offset into the extra window memory.
    ///     From <see cref="!:https://msdn.microsoft.com/en-us/library/windows/desktop/ms633585(v=vs.85).aspx">this</see> MSDN-Link.
    ///     AHref <a href="http://stackoverflow.com">here</a>.
    ///     see-href <see href="http://stackoverflow.com">here</see>.
    /// </summary>
    /// <param name="hwnd"></param>
    /// <param name="index"></param>
    /// <returns>
    ///     Testlink in return: <a href="http://stackoverflow.com">here</a>
    /// </returns>
    public static IntPtr GetWindowLongPtr(IntPtr hwnd, int index)
    {
        return IntPtr.Size == 4 ? GetWindowLongPtr32(hwnd, index) : GetWindowLongPtr64(hwnd, index);
    }

Результаты следующие:

  1. Подсказка:
    • Показывает cref-url с!:, Но скрывает "это"
    • Скрывает ahref-url, но показывает текст
    • Скрывает ссылку и текст seehref Скриншот всплывающей подсказки intellisense

  1. Обозреватель объектов:
    • Показывает cref-url с!:, Но скрывает "это" (не кликабельно)
    • Скрывает ahref-url, но показывает текст (не кликабельно)
    • Скрывает ссылку и текст seehref (не кликабельно) Снимок экрана ObjectBrowser

  1. ReSharper (CTRL + SHIFT + F1, команда ReSharper.ReSharper_QuickDoc)
    • Скрывает cref-url с!:, Но показывает "это" (не кликабельно)
    • Теперь интерпретирует ahref-url (версия от 2016 г. и новее)
    • Скрывает ссылку и текст seehref (не кликабельно) Скриншот Resharper QuickHelp

Вывод: лучший вариант, как указал Хайнер, был бы

See <a href="link">this link</a> for more information.

Обновление Как отметил Томас Хагстрем, Resharper теперь поддерживает интерактивные URL-адреса a-href. Обновил скриншот соответственно.


2
Фактически, с ReSharper и CTRL + SHIFT + F1 URL-адрес является интерактивным, а HTML-ссылка совместима, так что это действительно лучший вариант
Томас Хагстрем

1
Спасибо Thomas Hagström, обновил ответ и скриншот.
MHolzmayr 01

27

Вы можете использовать стандартный синтаксис HTML:

<a href="http://stackoverflow.com">here</a>

Текст будет отображаться в Visual Studio.


5
Это лучший подход. Поскольку вывод по-прежнему будет иметь смысл в Visual Studio (он просто показывает текст), а ссылка будет работать в инструментах документации, таких как Sandcastle.
Snæbjørn

20

Вы можете включить префикс !: В файл cref, чтобы он оставался нетронутым в сгенерированной документации Xml, чтобы такие инструменты, как Innovasys Document! X и Sandcastle будут использовать это. например

/// <summary>
/// This is a math function I found <see cref="!:http://stackoverflow.com">HERE</see>
/// </summary>

Visual Studio intellisense не будет отображать это как ссылку для intellisense - не имеет большого смысла, поскольку это всплывающая подсказка, поэтому вы все равно не можете щелкнуть по ней.


2
Был бы смысл, если бы обозреватель объектов действительно<see/> каким-то образом сделал интерактивными и распознавал URI веб-сайтов (поскольку обозреватель объектов не является всплывающей подсказкой). Просто говорю' ;-).
binki

8

Используйте <a>тег. Например, я использовал это решение в своем проекте:

Результат:

Мой XML-код:

/// <summary>
/// This is C# XML Documentation Website Link
/// <a href="/programming/6960426/c-sharp-xml-documentation-website-link">See more</a>
/// </summary>

Или используйте <see>тег. Результат такой же, как у <a>тега.

/// <summary>
/// This is C# XML Documentation Website Link
/// <see href="/programming/6960426/c-sharp-xml-documentation-website-link">See more</see>
/// </summary>

0

Я тоже <see href="https://some.com/>сначала попробовал, и это не сработало; Однако, я потом попробовал <seealso href="https://some.url/">и сделал работу.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.