C# XML文档网站链接

245

在XML文档中是否可以包含指向网站的链接?例如,我的方法被概括为

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

当我输入时

SomeMathThing(

我希望 IntelliSense 能够显示摘要,并提供单击“此处”链接到外部网站的选项。这是否可能?如何实现?


6个回答

268

尝试:

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

17
很抱歉,运气不太好。它甚至没有显示“HERE”。 - john
9
抱歉,经过一些调查后(请参见这里这里),看起来VS IDE不会显示那些超链接,但是像SandCastle这样的文档工具可以显示它们。 - dizzwave
3
对我来说它没有起作用,因为我的链接中有一个&符号。一旦我将其更改为https://somewhere.com?test1=1&amp;test2=2,它就可以工作了。 - paulguy
10
这在 VS 16.4.2 中可行。不确定它是在哪个版本中添加的,但现在你可以单击方法信息窗口中的链接。 - JB06
4
在VS 2019中可用,确切的版本号是VS 16.6.4。首先我尝试使用"cref",但是"href"效果更好。一个小技巧是,当工具提示出现时,将鼠标指针移动到工具提示之外时不要点击,这样可以单击链接导航到URL。很棒的功能VS!那么它在Vs Code中也能用吗?嗯...... - Tore Aurstad
显示剩余7条评论

105

稍微晚了一点,但这是我在研究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,但隐藏“this”
    • 隐藏ahref-url但显示文本
    • 隐藏seehref url和文本 intellisense tooltip截图

  1. 对象浏览器:
    • 显示带有!:的cref-url,但隐藏“this”(不可点击)
    • 隐藏ahref-url但显示文本(不可点击)
    • 隐藏seehref url和文本(不可点击) ObjectBrowser截图

  1. ReSharper(CTRL+SHIFT+F1,命令ReSharper.ReSharper_QuickDoc)
    • 隐藏带有!:的 cref-url,但显示“this”(不可点击)
    • 现在解释 ahref-url(2016年及更新版本)
    • 隐藏seehref url和文本(不可点击) Resharper QuickHelp截图

结论:正如Heiner指出的那样,最好的是

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

更新 正如Thomas Hagström指出的那样,Resharper现在支持可点击的a-href URL。相应地更新了截图。


2
实际上,使用ReSharper和CTRL+SHIFT+F1,URL是可点击的,并且HTML链接是兼容的,因此这确实是最佳选项。 - Thomas Hagström
1
感谢Thomas Hagström,更新了答案和截图。 - MHolzmayr
2
+1刚刚确认了JetBrains Rider(来自JetBrains的完整C#集成开发环境,并具备许多Resharper功能)仅支持<a href="...">text</a>,如果您尝试使用<see href="...">text</see>,将不会显示链接或文本。 - Eric Mutta

71
您可以使用标准的HTML语法:
<a href="http://stackoverflow.com">here</a>

这段文字将在Visual Studio中显示。


13
这是最佳方法。因为输出在Visual Studio中仍然有意义(它只显示文本),而链接将在像Sandcastle这样的文档工具中起作用。 - Snæbjørn
7
在VS 2022中,该链接变为可点击状态。这应该是被接受的答案。 - EriF89
3
在JetBrains Rider 2021.3中,只有这种方式适用于我。 - jurilents
在Rider 2023.2.3版本中,它是唯一一个对我有效的。 - undefined

24

您可以在 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不会将其显示为链接 - 因为它是一个工具提示,所以无法单击它,这样做也没有太大意义。


2
如果对象浏览器实际上使<see/>可点击,并且以某种方式识别网站URI(因为对象浏览器不是工具提示),那将会有一点意义。只是这么说而已;-)。 - binki
1
这种方法现在已经过时了,它会产生代码分析警告CA1200:避免使用带有前缀的cref标签。建议使用锚点标签(<a href="...">)。 - Rab

24
使用<a>标签。例如,我在我的项目中使用了这个解决方案:

结果:

我的XML代码:
/// <summary>
/// This is C# XML Documentation Website Link
/// <a href="https://dev59.com/pWw05IYBdhLWcg3w4125 more</a>
/// </summary>

或者使用<see>标签。结果与<a>标签相同。

/// <summary>
/// This is C# XML Documentation Website Link
/// <see href="https://dev59.com/pWw05IYBdhLWcg3w4125 more</see>
/// </summary>

3

我之前也尝试了<see href="https://some.com/>,但没有成功;不过后来我尝试了<seealso href="https://some.url/">,这次成功了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接