Visual Studio отображает ошибки, даже если проекты создаются


265

У меня проблема с Visual Studio для решения C #. Он отображает абсолютно случайные ошибки, но проекты создаются. Сейчас у меня 33 файла с ошибками, и я вижу красные волнистые линии во всех них.

Я попытался очистить / перестроить решение, закрыть Visual Studio и даже перезагрузить компьютер. Я также позаботился о том, чтобы шаги, описанные в разделе «Отладка», выполнялись даже с ошибками компилятора в Visual Studio. Я могу изменить файлы .cs, и я вижу изменения в решении.

У кого-нибудь есть идея о том, почему он это делает?


3
У вас установлен ReSharper или любой другой аддон, подобный этому? Они могут также вызвать красные волнистые линии.
user1908061

3
Попробуйте удалить папки bin и obj из каждого проекта.
Чарли Браун

Ошибки или предупреждения? Если проект строится, значит, это предупреждения. Отключите все аддоны и посмотрите, как это происходит.
Эхсан

У нас та же проблема с двумя нашими машинами на кандидатуре VS 2013 RC. Хотя Resharper не установлен. Дело в том, что, несмотря на то, что сборка выполняется без проблем, никакой intellisense работать не будет, поскольку он не может «разрешать» пространства имен и объекты. Очень странно. Работает на 5 других машинах отлично.
Ryk

Неразрешенные конфликты в Team Foundation Server также могут быть источником этой проблемы. Получение последней версии может сообщить об успешности и обновлении всех файлов, но это не всегда так. Если вы перейдете в Team Explorer> «Ожидающие изменения»> выпадающий «Действия»> «Разрешить конфликты» и нажмете «Получить все конфликты», он должен показать вам, есть ли какие-либо неразрешенные конфликты, которые вам нужно исправить.
user2310967

Ответы:


325

Если у вас есть ReSharper, попробуйте очистить кеш ReSharper:

В меню ReSharper> Параметры> Среда> Общие> Очистить кэш

и отключение и повторное включение ReSharper:

В меню Инструменты> Параметры> ReSharper> Общие> Приостановить / Восстановить


182

Очистка кеша Resharper в моем случае не помогла, попробовал приостановить / восстановить , а также восстановить Resharper, используя последнюю загрузку с сайта JetBrains - ничего из этого не помогло. Это после того, как я попытался закрыть / открыть VS, перезагрузить компьютер, повторить, Build / Rebuild и их комбинацию.

Интересно, что приостановка Resharper, казалось, решила проблему после 2-го перезапуска VS, но она вернулась после того, как я включил Resharper <- я пытался выполнить эту последовательность 2-3 раза, чтобы убедиться в паттерне.

Во всяком случае, у меня все еще были проблемы, когда я нашел эту статью:

Поэтому я удалил скрытый файл .SUO на том же уровне папок с решением, и он волшебным образом решил все красные.

Примечание. Для Visual Studio 2015 файл .SUO находится в скрытой папке .vs / [имя_решения] / v14 .


7
Шаги Решарпера тоже не сработали, но это сработало. Спасибо!
Джастин Морган

4
Ваше решение исправило это для меня после перезапуска Visual Studio. Спасибо! :)
Moulde

1
VS2015 - у меня даже был 1 проект, который не собирался бы строить, но я мог сказать по ошибкам, которые он должен был иметь. Мне не нужно было закрывать VS. Просто закройте решение, удалите .suo и снова откройте решение. Задача решена.
TTT

5
Все еще работает с VS2019, спасибо! Файл .suo находится по адресу .vs / [имя_решения] / v16.
Майкл

3
VS2019, я взломал каталог .vs, он был воссоздан при следующей сборке - фиктивная ошибка исчезла.
Лорен Печтел

92

tldr; Выгрузите и перезагрузите проблемный проект.

Когда это происходит со мной, я (раньше) пытался закрыть VS и снова открыть его. Это, вероятно, работало примерно половину времени. Если это не помогло, я бы закрыл решение, удалил файл .suo (или всю папку .vs) и заново открыл решение. До сих пор это всегда работало для меня (более 10 раз за последние 6 месяцев), но это немного утомительно, потому что некоторые вещи сбрасываются, такие как режим сборки, запуск проекта и т. Д.

Поскольку проблема обычно возникает только в одном проекте, я просто попытался выгрузить этот проект и перезагрузить его, и это сработало. Мой размер выборки всего 1, но он намного быстрее, чем два других варианта, поэтому, возможно, стоит попробовать. Я подозреваю, что это работает, потому что он пишет в файл .suo и, возможно, исправляет поврежденную часть, из-за которой возникла проблема.

Примечание: похоже, что это работает для VS 2019, 2017 и 2015.


7
« Я только что попытался выгрузить этот проект и перезагрузить его, и это сработало». Я чувствую, что я участвую в культе грузов, но в итоге я загружал и выгружал (со случайными очистками и сборками между ними), и в итоге получил золото. Так странно. Это с VS 2017.
ruffin

2
@ ruffin - хе-хе. Я думаю, что каждый ответ на этот вопрос - «культ груза», но я считаю, что мой самый быстрый и наименее навязчивый. ;)
TTT

1
Удаление всей папки .vs сделало это для меня в сообществе VS 2017 с ReSharper
Педро Мартинс Timóteo da Costa

3
Разгрузка и перезагрузка работали для меня в VS 2019 CE также
simonlchilds

1
Удаление папки .vs у меня работало в VS 2019 без ReSharper, просто VS. СПАСИБО!!!
Немец Латорре

39

Я очистил решение, закрыл VS, снова открыл его, собрал решение, и красные неразрешенные линии были очищены и сборка прошла успешно.


2
Эти шаги, точно следуя, работали на меня. Просто уборка и строительство не будет работать для меня.
JasonCoder

2
Выключи и включи снова ... ты думаешь, я бы уже попробовал это. +1
иандизм

Это решило проблему! Но что вызвало это в первую очередь !?
DiligentKarma

2
Я понятия не имею. Я считаю Visual Studio наиболее нестабильной IDE, которую я использовал. Он продолжает зависать, часто вылетает и время от времени показывает странные ошибки. Я перестал считать проблемы, если честно.
пиксель

Выполнение этих точных шагов не решило проблему для меня (в VS2015).
Тим

29

Я обнаружил, что это часто случается при использовании Git в Visual Studio 2017, переключая ветки, где есть зависимые изменения кода . Даже если проект будет успешно построен, в списке ошибок останутся ошибки.

Эти ошибки часто являются проблемами пространства имен и отсутствующими ссылками, даже если ссылка на библиотеку существует.

Решить:

  • Закрыть Visual Studio
  • Удалите файл {sln-root} .vs \ SlnName \ v15.suo (скрытый)
  • Перезапустите Visual Studio

Спасибо за этот совет. Это решило проблему для нас с VS 2017 (без каких-либо обновлений). FWIW, это случилось с нами после удаления и извлечения ветки, которая была перебазирована на удаленном компьютере.
Майк Аткиссон

1
Хотя это решение не решило мою проблему, я думаю, что эта проблема возникла после того, как я переключал ветки с незафиксированными изменениями (потому что мне нужно было применить их к другой ветке)
CularBytes,

Это именно моя проблема. Спасибо, мой спаситель
Динь ​​Чан

@CularBytes Может стоит сохранить изменения перед переключением веток. git stash, переключатель веток, git stash pop
Rebecca

18

Я перепробовал все 6 вариантов, у меня ничего не получалось. Ниже решение решило мою проблему.

Закрыть VS. Удалите скрытую папку «.vs» рядом с файлом решения. Перезапустите VS и загрузите решение.


Кажется, есть новая причина для этой проблемы, и это новое решение этой проблемы. Я знаю 3 других людей, которые также за несколько дней до того, как вы опубликуете это, неожиданно столкнулись с этой проблемой.
Джерри Преториус

Пришлось сделать то же самое, что и Моши. При запуске из VS 2019 файл .suo не выглядит. Можно было бы подумать, что они уже исправили бы эту проблему ... * ворчание ворчание ворчание *
Майк

Для меня форк тоже в vs2017
Нейц Галоф,

1
@MikeLoux Посмотрите на ответ Neolisk, и вы увидите, что он указал, что файл .suo теперь находится в папке .vs, поэтому все, что вам нужно сделать, это удалить этот один файл, а не всю папку. Не то чтобы это было особенно удовлетворительно!
Аврохом Исроэль

Аврохом - этот последний бит прекрасно подводит итог. Нет, это не совсем удовлетворительно. И, да, я полагаю, что в конечном итоге я нашел файл, в котором вы с Неолиском указали на это, и сделали это несколько раз, когда это повторилось (к счастью, не так часто). Так что ... это что-то, я думаю. :-)
Майк

12

У меня была такая проблема, когда Intellisense, похоже, не распознавал существование одного проекта (множество «не могу найти этот тип», «это пространство имен не существует» и т. Д.).

Удаление и повторное добавление ссылки на проект во всех ссылочных проектах позволило бы устранить проблему, но основную причину можно устранить, отредактировав файл .proj проблемного проекта.

В верхней части «пропавшего» проекта в файле .csproj находится элемент:

<ProjectGuid>{GUID}</ProjectGuid>

и во всех ссылочных проектах файлы .csproj были ссылками на проекты:

<ProjectReference Include="..\OffendingProject\OffendingProject.csproj">
  <Project>{ANOTHER-GUID}</Project>
  <Name>Offending Project</Name>
</ProjectReference>

Ссылочный GUID не совпадает с GUID проекта. Замена {GUID}выше {ANOTHER-GUID}исправила проблему без необходимости проходить через каждый ссылочный проект.


Это сработало для меня, хотя это был пакет Nuget. Я позаботился о том, чтобы путь оставался относительным в файле .csproj (буквально ничего не изменилось в TFS DIFF), но это сделало VS2017 STFU из-за несуществующих ошибок.
BrainSlugs83

1
Я только должен был повторно добавить одну ссылку на проект, и все ссылки на проблемы
обновились

Ни одно из других решений не сработало для меня, это сработало :)
Пабло Карраско Эрнандес

12

Вот коллекция популярных ответов. Upvote ОП ответа, если он помог вам:

Вариант 1. Очистить, построить и обновить ( опция @Mike Fuchs )

Как упоминал @Mike Fuchs , попробуйте выполнить следующие операции:

В меню «Построение»> «Чистое решение».

И

В меню Build> Build Solution

и выберите проект, о котором идет речь, и нажмите кнопку обновления:

Кнопка Обновить

Вариант 2: очистить, закрыть, перезапустить и построить ( опция @Pixel )

Как уже упоминалось @Pixel , попробуйте следующую последовательность операций:

  1. Чистый раствор
  2. Закрыть Visual Studio
  3. Откройте Visual Studio
  4. Построить решение

Вариант 3: очистить кеш ReSharper ( опция @GammaOmega )

Если у вас есть ReSharper, попробуйте очистить кеш ReSharper:

В меню ReSharper> Параметры> Среда> Общие> Очистить кэш

и отключение и повторное включение ReSharper:

В меню Инструменты> Параметры> ReSharper> Общие> Приостановить / Восстановить

Вариант 4. Удалите файл .suo ( опция @Neolisk ).

Как упомянул @Neolisk , удаление файла .suo может решить вашу проблему. Для Visual Studio 2015 файл находится в:

[Путь решения] /. Vs / [Имя решения] /v14/.suo

И для Visual Studio 2017:

[Путь решения] /. Vs / [Имя решения] /v15/.suo

Обратите внимание, что каталог .vs скрыт.

Вариант 5: выгрузить и перезагрузить проект ( опция @TTT )

Как упоминалось в @TTT , попробуйте выгрузить проект, который вызывает проблемы:

В обозревателе решений щелкните правой кнопкой мыши проект «Выгрузить проект».

И перезагрузить его

В обозревателе решений щелкните правой кнопкой мыши проект «Перезагрузить проект».

Вариант 6: удалить и добавить ссылку на Microsoft.CSharp ( опция @Guilherme )

Как упомянул @Guilherme , попробуйте удалить и добавить ссылку на «Microsoft.CSharp» из проектов, в которых есть проблемы.

В обозревателе решений разверните проект, разверните «Ссылки», щелкните правой кнопкой мыши «Microsoft.CSharp» и выберите «Удалить».

Затем щелкните правой кнопкой мыши References> Add Reference, выберите «Microsoft.CSharp» из списка и нажмите «OK».


Вариант 6 сделал это. Пришлось нажать на ссылку @Guilherme для upvote, потому что это (сейчас?) В другом вопросе.
gbarry

Ничто из вышеперечисленного не сработало для меня, имея более 80 проектов в решении
Efe

10

Удалите путь к скрытому файлу = ваше решение \ .vs \ Имя вашего решения \ v15 \ .suo


1
работал для меня тоже. VS 2019. Проекты WPF продолжали показывать ошибки в отношении несуществующих элементов управления, но работали просто отлично.
Флемминг Бонд Кентвед


5

Я заметил, что иногда при переключении веток git Visual Studio (2017) не распознает типы из некоторых файлов, которые были добавлены во второй ветке. Удаление папки .vs решает ее, но она также удаляет все настройки вашего рабочего пространства. Этот трюк, кажется, хорошо работает для меня:

  1. Обозреватель решений -> Найти файл с неизвестным классом.
  2. Нажмите Показать все файлы в верхней части обозревателя решений.
  3. Щелкните правой кнопкой мыши файл -> Исключить из проекта.
  4. Снова щелкните файл правой кнопкой мыши -> Включить в проект.

Это заставляет Intellisense анализировать файл, который он пропустил при переключении веток.


4

Следующее решение сработало для меня

1 - Закрыть VS

2 - Удалить папку .vs

3 - Открытый VS

4 - Построить решение


3

Возможно, вы пытаетесь сбросить кеш intellisense. У меня была похожая проблема в Visual Studio 2012, когда я работал над большим проектом со многими частичными определениями классов. Сокращение парциальных значений решило проблему частично, очистив кэш intellisense - на некоторое время.


3

Иногда мне приходится делать пользовательскую очистку, просматривая все проекты и вручную удаляя папки «bin» и «obj». Чтобы увидеть их в Visual Studio, вам нужно включить скрытые файлы и папки для каждого проекта. После этого перестройте решение.


3

Удаление .vsпапки решило мою проблему.

Но это также сбрасывает текущие настройки моего решения в VS. Мол, мои выгруженные проекты в решении были перезагружены, и все прикрепленные и открытые документы также были закрыты, когда я перезапустил VS.


2

0 - Щелкните правой кнопкой мыши Решение и очистите решение.

1 - Закрыть VS

2 - Удалить файл проекта .suo

3 - Открытый VS

4 - Построить решение


2

Мой коллега столкнулся с этой проблемой сегодня. Мы испробовали здесь множество рекомендаций, но ни одна из них не сработала, кроме решения, описанного ниже.

Проблема:

Проект строится нормально, но Intellisense не распознает определенные типы и помечает определенные usingоператоры как недействительные.

Решение:

Измените «Платформу решений» (в VS 2017 это раскрывающийся список рядом с раскрывающимся списком «Конфигурация решения», который имеет значения, такие как x86, x64, AnyCPU, Mixed Platforms и т. Д.), На AnyCPU .

Платформа для вашего проекта может отличаться, но кажется, что некоторые ссылки могут быть недействительными для всех платформ.


1

В моем конкретном случае это была ссылка на услугу, которую другой разработчик объединил в основную ветку. Это было прекрасно, за исключением того, что подсветка синтаксиса не смогла разрешить сгенерированный класс обслуживания, а источник был выделен красным цветом. Очистка, восстановление, перезагрузка ничего не сделали.

Все, что мне нужно было сделать, это обновить ссылку на сервис, и VS удалось собрать все детали за кулисы. Никаких изменений в исходном коде или сгенерированных файлах.


1

Я только что столкнулся с этой проблемой после возврата git commit, который добавил файлы обратно в мой проект.

Очистка и перестройка проекта не работали, даже если я закрывал VS между каждым шагом.

То, что в итоге сработало, переименовало файл во что-то другое и снова изменило его. : Facepalm:


1

Попробовав все перечисленные варианты, я обнаружил еще одну причину, по которой это может произойти. Если кто-то отправил вам исходный код в виде zip-файла или вы загрузили zip-архив, Windows может заблокировать все файлы. 2 способа решить эту проблему:

Способ 1:

Щелкните правой кнопкой мыши на исходном Zip-файле -> Отметьте «Разблокировать» -> Нажмите «Применить».

Способ 2:

Если это не вариант, вместо открытия свойств для каждого файла в папке решения просто откройте Power Shell и рекурсивно разблокируйте, используя следующее:

Get-ChildItem -Path 'C:\<ROOT FOLDER OF SOLUTION>\' -Recurse | Unblock-File

1
  1. сначала закройте решение.
  2. затем удалить файл кэша решения (в папке C: \ Users \ Documents \ Visual Studio \ Backup Files / файл кэша проекта)
  3. затем .suo файл удалить
  4. затем решение открыть и построить.

Я надеюсь решить вашу проблему


1

Была эта проблема на работе (работает VS2017). Перепробовал все ответы здесь. Нет радости

Проект строился бы просто отлично, но жаловался, что пространства имен / типы не могут быть найдены. Красные повороты повсюду. Много ошибок в окне Список ошибок.

Мое решение содержало 3 проекта.

Обнаружено, что 3 из ссылок на библиотеку NuGet для одного из проектов были вне очереди. Консолидированы ссылочные версии библиотеки и бинго.

Надеюсь, это кому-нибудь поможет.

Бретт.



0

Иногда, если вы просто очищаете решение, ошибки исчезают, но они могут в конечном итоге вернуться через некоторое время или при следующей сборке.


0

Эта проблема возникла из-за того, что Visual Studio не распознал один тип, который показывал красный волнистый характер, даже если решение построено успешно. Я заметил в обозревателе решений, что в файле нет стрелки расширения слева, которая показывает классы и свойства при расширении.

Исправление состояло в том, чтобы исключить файл из проекта и сохранить / построить, что вызвало ожидаемую ошибку, а затем включить файл в проект и сохранить и построить.

После выполнения этих шагов Visual Studio снова начала распознавать мой тип. Глядя на diff в git, кажется, что проблема была в том, что окончания строк не <Compile Include="..." />совпадали в строке моего файла .csproj.


0

в моем случае vs никогда не сохранял импортированные пространства имен в свойствах проекта> ссылки

когда я попытался добавить / проверить их снова, я не смог, и я выдал ошибку, и когда сохраненный проект потерпел крах. Когда я снова открыл все стандартные импортированные пространства имен (system.data и т. Д.), Все снова были отмечены галочкой, и затем он распознавал все без ошибок.


0

TL; DR: выполнить чистую переустановку Visual Studio

Потратив несколько часов, я все еще не мог исправить это для Visual Studio 2017. Затем я установил Visual Studio 2019 PREVIEW, и внезапно IntelliSense снова отображает членов STL-классов (чего не происходит в Visual Studio 2017). ).

Итак, я предполагаю, что может быть что-то не так с самой Visual Studio (может быть, что-то в каталоге кеша или вообще что-то на вашем ПК, что не имеет прямого отношения к конкретному решению), что может быть решено с помощью чистой и полной -установка Visual Studio. Я знаю, что это глупое «решение», но в моем случае только новая установка Visual Studio (2019) дала эффект.

Как уже упоминалось, в моем случае затрагивались только классы STL. IntelliSense не будет отображать их участников, что странно. Я подумал, что это может быть связано с предварительно скомпилированными заголовками. Где-то я читал, что STL и проект должны быть на одном диске, и размещение их на одном и том же должно решить проблему. Но ни один из этих маршрутов не привел к успеху.


0

Я обнаружил, что это может произойти, если указанный проект нацелен на более высокую версию фреймворка, чем проект, который пытается его использовать. Вы можете сказать, если это проблема, перейдя в окно вывода и ища что-то похожее на это:

Первичная ссылка «my_reference» не может быть разрешена, поскольку она построена на основе инфраструктуры .NETFramework, Version = v4.7.2. Это более высокая версия, чем целевая на данный момент платформа .NETFramework, Version = v4.7.

Решение состоит в том, чтобы изменить целевую структуру того или иного проекта.


0

Мои симптомы в VS2019 заключались в том, что я буду строить с некоторыми ошибками. Затем я исправлю ошибки, и сборка будет работать, как показано в окне «Вывод». Но окна ошибок все еще показывали старые ошибки. Я мог бы запустить это просто отлично. Закрытие VS2019 и повторное открытие исправили проблему, но ненадолго. Это начало происходить в версии 16.4.3

Это решение, кажется, работает для меня:

Снимите флажок Инструменты-> Опция-> Проекты и решения-> Общие-> Разрешить параллельную инициализацию проекта

Я нашел это исправление в комментариях здесь: https://developercommunity.visualstudio.com/content/problem/483450/vs-2019-intellisense-reports-compile-errors-when-r.html


-1

Попробуйте навести курсор мыши на подчеркнутые элементы. Как правило, он должен сказать вам, в чем проблема. Чтобы увидеть список всех ошибок / предупреждений, перейдите в View => Error List. В нижней части IDE должна открыться таблица со всеми перечисленными ошибками / предупреждениями.


Под случайными классами есть волнистые линии, но я не получаю никаких ошибок в списке ошибок. Кроме того, проекты строятся отлично. Похоже, это связано с Intellisense.
GammaOmega
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.