Откуда берутся комментарии Visual Studio Intellisense?
Проекты Visual Studio имеют возможность создавать Файлы документации XML.
Я понимаю, что файлы документации XML могут быть полезны, если вы хотите запустить программу, такую как Sandcastle или NDoc, или что-то еще, чтобы создавать документы API-интерфейса MSDN. Хорошо. Меня это не волнует.
По этой ссылке: http://msdn.microsoft.com/en-us/library/s0we08bk.aspx
Когда вы добавляете ключ /doc в командную строку Visual Basic, С# или С++, создается XML файл, который служит основой для документации IntelliSense.
Итак, это заставляет меня думать, что Intellisense комментирует может из этих сгенерированных XML файлов.
Но я создал небольшое тестовое приложение, в котором я вызываю метод в совершенно другом проекте, и комментарий XML появляется в моем Intellisense. И я даже не сохранил класс MediaHelper! Таким образом, в этом случае очевидно, что нет .xml файла, который использует Intellisense.
![Comment from Un-Saved Class]()
В свете всего этого, где Intellisense получает от этого мусор?
Спасибо!
Ответы
Ответ 1
Когда исходный код находится в пределах существующего решения (или, что еще лучше, того же проекта), Visual Studio не нужно искать XML файл - он знает, где находятся комментарии к документации, поэтому он будет использовать их. (Так же, как Intellisense знает, какие члены, которые вы заявили в другом файле, даже если вы еще не восстановили их.)
Вам нужно создать файл XML, если вы хотите добавить ссылку на DLL, а не ссылку на проект в том же решении. Так, например, я поставляю NodaTime.xml с пакетом Noda Time, так что, даже если у вас нет исходного кода, вы все равно можете видеть комментарии в Intellisense.
Ответ 2
Intellisense получает его из своих комментариев 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();
}