Visual Studio 2015: ошибки Intellisense, но компилируются решения

В настоящее время мы оцениваем новую версию Visual Studio 2015 и сталкиваемся с необычной проблемой с intellisense. Когда я скомпилировал наше основное решение с новой студией, сборка завершается успешно, но тем не менее отображаются 6 ошибок.

Я обнаружил, что это не настоящая ошибка, а только ошибка intellisense. Код определенно правильный и все скомпилировано успешно. Однако код отмечен красным, а ошибки отображаются в списке ошибок.

Все 6 ошибок имеют одинаковое происхождение. Это простой вызов конструктора. Достаточно странно, но есть и некоторые вхождения одного и того же конструктора без ошибок.

Сообщение об ошибке:

Code: CS1729
Message: '<the class>' does not contain a constructor that takes that many arguments.
Project: <the project name>
File: <the path to the file>

Новая студия была установлена ​​на недавно установленной Windows 7 без какого-либо устаревшего программного обеспечения (без VS13).

Я уже пытался очистить кеши, удалил файл suo, удалил каталог bin и obj, очистил и перестроил решение и т.д. Но ничего не получилось.

Может ли кто-нибудь объяснить это поведение мне?

Ответ 1

Также возникла проблема с перенесенным проектом, поэтому я ссылался на dll Microsoft.CSharp. В некоторых проектах мне нужно было удалить и снова добавить ссылку в проекте.

Ответ 2

У меня были тысячи ошибок intellisense и 0 ошибок сборки. После удаления файла .suo перезапускаются ошибки VS intellisense.

Файл Suo находится относительно источника в: .vs\SolutionName\v14.suo

Согласно комментарию: Остерегайтесь, что *.suo - скрытый файл.

Изменить: согласно комментариям, VS2017 имеет ту же проблему, поэтому вы можете использовать аналогичное решение: Удалить .vs\SolutionName\v15.suo

Ответ 3

Также возникла эта проблема (заголовок, а не конкретное сообщение об ошибке), а также криволинейные строки в редакторе. Первая строка squiggly находится под первым оператором #include, который называет предварительно скомпилированный заголовок. Intellisense не может включать предварительно скомпилированный заголовок, но не указывает это как ошибку; вместо этого он перечисляет ошибки далее по файлу, по коду, который (очень по праву) полагается на объявления в предварительно скомпилированном заголовке.

Причина, по которой Intellisense не находит предварительно скомпилированный заголовок в моей среде, заключается в том, что заголовок с именем не является фактическим файлом. Он не должен быть в какой-либо другой версии VC или gcc, которую я использовал, ни в компиляторе 2015, пока настроены предварительно скомпилированные настройки заголовка. По-видимому, уже не для Intellisense. Я не совсем уверен, что в 2013 году это было иначе, может быть, я просто не заметил.

В маловероятном случае, что это будет проблема, описанная здесь, решение прост: создайте небольшой файл с притвором-именем предварительно скомпилированного заголовка, как указано в директивах #include, и пусть этот файл содержит фактический имя предварительно скомпилированного заголовка.

Если вам интересно... почему это различие между предварительно скомпилированным заголовком в выражении "#include" и фактическим именем файла предварительно скомпилированного заголовка? Именно потому, что он гарантирует правильную настройку предварительно скомпилированных заголовков. Там, где прекомпилированный заголовок "#included", нет файла, который может быть включен. Просматривается либо фактически прекомпилированная (двоичная) версия фактического заголовка, либо компиляция не выполняется. Очевидно, недостатком является то, что он смущает людей, читающих код, а не только Intellisense.

Ответ 4

Включение аналогичной проблемы в Visual Studio 2017 Basic Project Project. Следующие шаги сделали трюк для меня

  • Выполнение чистого решения
  • Закрыть VS
  • Удалить файл .suo и удалить файлы bin/obj
  • Повторно открыть VS

Ответ 5

Сегодня у меня есть аналогичная проблема с MSVС++ 2015. Я почти сдался и решил продолжить без подсказок IDE, но иногда я заметил, что stdafx.h подпроекта, с которым у меня были проблемы, не содержит никаких стандартных заголовки библиотек. Я предположил, что это может замедлить компиляцию модуля, но включение стандартных заголовков там также фиксировало Intellisense.

Ответ 6

У меня было несколько stdfax.h в дополнительных каталогах Include. Убедитесь, что stdafx.h, который вы намереваетесь, первым в вашем пути.