Ответ 1
Также возникла проблема с перенесенным проектом, поэтому я ссылался на dll Microsoft.CSharp. В некоторых проектах мне нужно было удалить и снова добавить ссылку в проекте.
В настоящее время мы оцениваем новую версию 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, очистил и перестроил решение и т.д. Но ничего не получилось.
Может ли кто-нибудь объяснить это поведение мне?
Также возникла проблема с перенесенным проектом, поэтому я ссылался на dll Microsoft.CSharp. В некоторых проектах мне нужно было удалить и снова добавить ссылку в проекте.
У меня были тысячи ошибок intellisense и 0 ошибок сборки. После удаления файла .suo перезапускаются ошибки VS intellisense.
Файл Suo находится относительно источника в: .vs\SolutionName\v14.suo
Согласно комментарию: Остерегайтесь, что *.suo - скрытый файл.
Изменить: согласно комментариям, VS2017 имеет ту же проблему, поэтому вы можете использовать аналогичное решение: Удалить .vs\SolutionName\v15.suo
Также возникла эта проблема (заголовок, а не конкретное сообщение об ошибке), а также криволинейные строки в редакторе. Первая строка squiggly находится под первым оператором #include
, который называет предварительно скомпилированный заголовок. Intellisense не может включать предварительно скомпилированный заголовок, но не указывает это как ошибку; вместо этого он перечисляет ошибки далее по файлу, по коду, который (очень по праву) полагается на объявления в предварительно скомпилированном заголовке.
Причина, по которой Intellisense не находит предварительно скомпилированный заголовок в моей среде, заключается в том, что заголовок с именем не является фактическим файлом. Он не должен быть в какой-либо другой версии VC или gcc, которую я использовал, ни в компиляторе 2015, пока настроены предварительно скомпилированные настройки заголовка. По-видимому, уже не для Intellisense. Я не совсем уверен, что в 2013 году это было иначе, может быть, я просто не заметил.
В маловероятном случае, что это будет проблема, описанная здесь, решение прост: создайте небольшой файл с притвором-именем предварительно скомпилированного заголовка, как указано в директивах #include
, и пусть этот файл содержит фактический имя предварительно скомпилированного заголовка.
Если вам интересно... почему это различие между предварительно скомпилированным заголовком в выражении "#include" и фактическим именем файла предварительно скомпилированного заголовка? Именно потому, что он гарантирует правильную настройку предварительно скомпилированных заголовков. Там, где прекомпилированный заголовок "#included", нет файла, который может быть включен. Просматривается либо фактически прекомпилированная (двоичная) версия фактического заголовка, либо компиляция не выполняется. Очевидно, недостатком является то, что он смущает людей, читающих код, а не только Intellisense.
Включение аналогичной проблемы в Visual Studio 2017 Basic Project Project. Следующие шаги сделали трюк для меня
Сегодня у меня есть аналогичная проблема с MSVС++ 2015. Я почти сдался и решил продолжить без подсказок IDE, но иногда я заметил, что stdafx.h подпроекта, с которым у меня были проблемы, не содержит никаких стандартных заголовки библиотек. Я предположил, что это может замедлить компиляцию модуля, но включение стандартных заголовков там также фиксировало Intellisense.
У меня было несколько stdfax.h
в дополнительных каталогах Include. Убедитесь, что stdafx.h
, который вы намереваетесь, первым в вашем пути.