Visual Studio Intellisense的注释是从哪里来的?

14

Visual Studio项目有一个选项可以创建XML文档文件

我知道如果你想运行像Sandcastle或NDoc之类的程序来创建MSDN风格的API文档,XML文档文件可能会很有用。好吧,我不在意这个。

根据这个链接:http://msdn.microsoft.com/en-us/library/s0we08bk.aspx

当您将/doc开关添加到Visual Basic、C#或C++编译器命令行中时,将生成一个.xml文件,作为IntelliSense文档的基础。

因此,这让我想到Intellisense注释可以出现在这些生成的XML文件中。

但我创建了一个小测试应用程序,在其中调用完全不同的项目中的一个方法,XML注释出现在我的Intellisense中——而且我甚至还没有保存MediaHelper类!因此,在这种情况下,显然没有.XML文件Intellisense正在使用。

Comment from Un-Saved Class

鉴于所有这些,Intellisense从哪里获取它的东西呢?谢谢!

2个回答

21

当源代码位于现有解决方案中(或者更好的是,同一项目中),Visual Studio无需查找XML文件 - 它知道文档注释的位置,因此会使用它们。 (就像Intellisense知道您在其他文件中声明的成员一样,即使您实际上还没有重新构建。)

如果您想要添加对DLL的引用而不是同一解决方案中的项目引用,则需要创建一个XML文件。 因此,例如,我会为Noda Time软件包提供NodaTime.xml,这样即使您没有源代码,也可以在Intellisense中查看注释。


Jon,这太棒了。你在我提问后的3分钟内就回答了我的问题。这非常有道理。 - Chris Leyva
一些同事分享了一个很好的理由,解释了我们的团队为什么要生成XML文档。在像我们这样的大型全球团队中,它迫使每个人都记录他们的代码。只有在打开“将警告视为错误”时才能正常工作。因此,如果您没有记录代码,就无法编译。 - Chris Leyva

5

智能感知从XML注释中获取信息。

举个例子,假设我有一个类:

///<summary>
/// This is an example class
///</summary>
static class Foo
{
    //members
}

实际上,你甚至可以深入到更深的层次。例如,一个方法:

///<summary>
///Returns the object to string, uppercased.
///</summary>
///<param name="o">The object to be transformed.</param>
///<returns>The string.</returns>
public string someMethod(object o)
{
   return o.ToString().ToUpper();
}

你说得完全正确。我知道它来自XML注释,但我想我的问题表述得不太好。Jon Skeet理解了我的意思并回答了我的问题。 - Chris Leyva
谢谢你的回答。我想我的真正问题是:“除了MSDN风格的文档,XML文档文件还有什么用处?” - Chris Leyva

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