Link zur C # XML-Dokumentationswebsite

144

Ist es möglich, einen Link zu einer Website in die XML-Dokumentation aufzunehmen? Zum Beispiel ist meine Methode zusammengefasst als

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

und wenn ich tippe

SomeMathThing(

Ich möchte, dass IntelliSense die Zusammenfassung mit der Option anzeigt, auf "HIER" zu klicken, um auf eine externe Website zu verlinken. Ist das möglich? Wie würde es gemacht werden?

John
quelle

Antworten:

149

Versuchen:

///<Summary>
/// This is a math function I found <see href="http://stackoverflow.com">HERE</see>
///</Summary>
Dizzwave
quelle
7
Ich fürchte, kein Glück. Es wurde nicht einmal "HIER" angezeigt.
John
5
Hmmm, ich entschuldige mich. Ich habe etwas mehr recherchiert (siehe hier und hier ) - und es sieht so aus, als würde die VS-IDE diese Hyperlinks nicht anzeigen, aber ein Dokumentationstool wie SandCastle könnte sie anzeigen.
Dizzwave
2
Sie können übrigens hier über Sandcastle lesen. "Sandcastle, erstellt von Microsoft, ist ein kostenloses Tool zum Erstellen von Dokumentationen im MSDN-Stil aus .NET-Assemblys und den zugehörigen XML-Kommentardateien. Es ist befehlszeilenbasiert und verfügt über kein GUI-Frontend, keine Projektverwaltungsfunktionen oder eine automatisierte Funktion Build-Prozess. " HTH!
Dizzwave
1
Dies wird von Visual Studio nicht unterstützt, kein Intellisense für hrefAttribut.
Konard
3
Dies funktioniert in VS 16.4.2. Nicht sicher, welche Version hinzugefügt wurde, nur dass Sie jetzt auf Links im Methodeninfofenster klicken können.
JB06
71

Ein bisschen spät im Hype-Zug, aber hier ist, was ich für Visual Studio 2015 herausgefunden habe.

Mein Beispiel sieht so aus:

    /// <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);
    }

Die Ergebnisse sind:

  1. Tooltip:
    • Zeigt cref-url mit!:, Versteckt aber "dies"
    • Blendet eine Ahref-URL aus, zeigt aber Text an
    • Versteckt seehref URL und Text Screenshot des Intellisense-Tooltips

  1. Objektbrowser:
    • Zeigt cref-url mit!: An, verbirgt aber "this" (nicht anklickbar)
    • Blendet eine Ahref-URL aus, zeigt aber Text an (nicht anklickbar)
    • Versteckt seehref URL und Text (nicht anklickbar) Screenshot von ObjectBrowser

  1. ReSharper (STRG + UMSCHALT + F1, Befehl ReSharper.ReSharper_QuickDoc)
    • Versteckt cref-url mit!:, Zeigt aber "this" an (nicht anklickbar)
    • Interpretiert jetzt ahref-url (Version von 2016 und neuer)
    • Versteckt seehref URL und Text (nicht anklickbar) Screenshot von Resharper QuickHelp

Fazit: Das Beste, wie Heiner betonte, wäre

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

Update Wie Thomas Hagström betonte, unterstützt Resharper jetzt anklickbare a-href-URLs. Screenshot entsprechend aktualisiert.

MHolzmayr
quelle
2
Tatsächlich ist mit ReSharper und STRG + UMSCHALT + F1 eine URL anklickbar und der HTML-Link kompatibel. Das ist in der Tat die beste Option
Thomas Hagström,
1
Danke Thomas Hagström, aktualisierte die Antwort und den Screenshot.
MHolzmayr
26

Sie können die Standard-HTML-Syntax verwenden:

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

Der Text wird in Visual Studio angezeigt.

Heiner
quelle
5
Dies ist der beste Ansatz. Da die Ausgabe in Visual Studio weiterhin sinnvoll ist (es wird nur der Text angezeigt) und der Link in Dokumentationstools wie Sandcastle funktioniert.
Snæbjørn
20

Sie können ein!: Präfix in eine cref einfügen, damit es in der generierten XML-Dokumentation unberührt bleibt, sodass Tools wie Innovasys Document! X und Sandcastle werden es benutzen. z.B

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

Visual Studio Intellisense zeigt dies jedoch nicht als Link für Intellisense an - wäre nicht sehr sinnvoll, da es sich um einen Tooltip handelt, sodass Sie ohnehin nicht darauf klicken können.

Fubaar
quelle
2
Es wäre sinnvoll, wenn der Objektbrowser tatsächlich <see/>aufklickbare und erkannte Website-URIs erstellt hätte (da der Objektbrowser kein Tooltip ist). Ich sag bloß' ;-).
Binki
6

Verwenden Sie ein Tag. Zum Beispiel habe ich diese Lösung in meinem Projekt verwendet

Ergebnis ist hier

Mein XML-Code lautet:

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

Oder verwenden Sie das Tag "see". Das Ergebnis ist dasselbe wie bei einem "a" -Tag

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