Откуда берутся комментарии Visual Studio Intellisense? - программирование
Подтвердить что ты не робот

Откуда берутся комментарии 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 получает от этого мусор? Спасибо!

4b9b3361

Ответ 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();
}