Visual Studio відображає помилки, навіть якщо проекти створюються


265

У мене проблема з Visual Studio на рішенні C #. Він відображає абсолютно випадкові помилки, але проекти будуються. На даний момент у мене 33 файли з помилками, і я бачу червоні кричущі лінії у всіх них.

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

Хтось має уявлення про те, чому це робить?


3
У вас встановлений ReSharper або будь-який інший подібний додаток? Вони також можуть викликати червоні криволінійні лінії.
user1908061

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

Помилки чи попередження? Якщо проект будується, то це означає, що це попередження. Вимкніть всі додатки і подивіться, як це відбувається.
Ехсан

Ми маємо той самий випуск із двома нашими машинами щодо кандидата VS 2013 RC. Не встановлено Resharper. Делема тут полягає в тому, що, хоча вона створюється без проблем, жодна інтелігенція не працюватиме, оскільки не може «вирішувати» простори імен та об’єкти. Дійсно дивно. Працює на 5 інших машинах чудово.
Рик

Невирішені конфлікти в Team Foundation Server також можуть бути джерелом цієї проблеми. Отримання останньої версії може повідомити, що вона успішна, і всі файли оновлюються, але це не завжди так. Якщо ви перейдете до Провідника команди> Зміни в очікуванні> Дії, що випадають> Вирішіть конфлікти та натисніть "Отримати всі конфлікти", це повинно показати вам, чи є якісь невирішені конфлікти, які потрібно виправити.
користувач2310967

Відповіді:


325

Якщо у вас є ReSharper, спробуйте очистити кеш ReSharper:

У меню ReSharper> Опції> Навколишнє середовище> Загальне> Очистити кеші

та відключення та повторне включення ReSharper:

У меню Інструменти> Опції> ReSharper> Загальне> Призупинити / відновити


182

Очищення кеша Resharper не допомогло в моєму випадку, спробувало призупинити / відновити , а також відновити Resharper, використовуючи останнє завантаження з веб-сайту JetBrains - жодне з них не допомогло. Це після того, як я спробував закрити / повторно відкрити VS, перезавантажити машину, повторити, скласти / відновити та їх комбінацію.

Цікаво, що призупинення Resharper, здавалося, вирішило проблему після 2-го перезавантаження VS, але це було повернуто після того, як я включив Resharper <- я намагався виконати цю послідовність 2-3 рази, щоб забезпечити схему.

У будь-якому випадку, у мене були проблеми, коли я знайшов цю статтю:

Тому я видалив прихований файл .SUO на одному рівні папки з рішенням, і він магічно вирішив усі червоні.

Примітка - для Visual Studio 2015 файл .SUO знаходиться у прихованій папці .vs / [рішення_імені] / v14 .


7
Кроки Resharper також не працювали для мене, але це було. Дякую!
Джастін Морган

4
Ваше рішення вирішило це для мене, після перезапуску візуальної студії. Дякую! :)
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
Педро Мартінс Тимотео да Коста

3
Розвантаження та перезавантаження працювали для мене і в VS 2019 CE
simonlchilds

1
Видалення .vs папки працювало для мене в VS 2019, без ReSharper, просто звичайний VS. ДЯКУЮ!!!
Німецький Латорре

39

Я очистив розчин, закрив VS, знову відкрив його, створив розчин, а червоні невирішені лінії очистили і збір вдався.


2
Ці кроки, виконані точно, працювали на мене. Просто прибирання та будівництво не допомогли б мені.
JasonCoder

2
Вимкніть і знову ввімкніть ... ви думаєте, я б знав, щоб спробувати це зараз. +1
iandisme

Це вирішило проблему! Але що це спричинило в першу чергу !?
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
Ребекка

18

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

Закрити VS. Видаліть приховану папку ".vs" поруч із файлом рішення. Перезапустіть VS та завантажте рішення.


мабуть, є нова причина цієї проблеми, і це нове рішення цієї проблеми. Я знаю трьох інших людей, які також у дні, коли ви відправляли це повідомлення, і раптом натрапили на цю проблему.
Геррі Преторіус

Довелося робити те саме, що і Моші. Здається, що файл .suo під час запуску з VS 2019. Можна було б подумати, що вони вирішили б цю проблему до цього моменту ... * бурмотить бурчання бурчання *
Майк Лукс

Для мене вилка теж у 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}виправленою проблемою без необхідності переглядати кожен посилальний проект.


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

1
Мені довелося лише додати єдину посилання на проект, і всі посилання на проблеми оновлені
robaudas

Жодне з інших рішень не працювало для мене, це зробило трюк :)
Пабло Карраско Ернандес

12

Ось збірка популярних відповідей. Підтвердьте ОП відповіді, якщо це допомогло вам:

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

Як згадував @Mike Fuchs , спробуйте виконати такі дії:

У меню Створити> Очистити рішення

І

У меню Створити> Створити рішення

і виберіть проект, про який йде мова, і натисніть кнопку оновлення:

Кнопка оновлення

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

Як згадував @Pixel , спробуйте наступну послідовність операцій:

  1. Очистіть розчин
  2. Закрити Visual Studio
  3. Відкрити візуальну студію
  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» та видаліть.

Потім клацніть правою кнопкою миші посилання Список літератури> Додати довідку, виберіть у списку "Microsoft.CSharp" та натисніть кнопку ОК


Варіант 6 це зробив. Довелося натиснути посилання @Guilherme, щоб оновити, оскільки це (зараз?) В іншому питанні.
gbarry

Ніхто з вищезгаданого не працював для мене, маючи в своєму розпорядженні понад 80 проектів
Ефе

10

Видаліть прихований шлях до файлу = ваше рішення \ .vs \ ваше рішення Ім'я \ v15 \ .suo


1
працював і для мене. VS 2019. Проекти WPF постійно показували помилки щодо контролю, які не існували, але працювали нормально.
Flemming Bonde Kentved


5

Я помітив, що іноді під час перемикання гілок git Visual Studio (2017) не розпізнає типи з деяких файлів, доданих у другу гілку. Видалення папки .vs вирішує цю проблему, але вона також руйнує всі налаштування вашої робочої області. Цей трюк, здається, працює добре для мене:

  1. Провідник рішень -> Знайдіть файл із нерозпізнаним класом у ньому.
  2. Натисніть Показати всі файли у верхній частині Провідника рішень.
  3. Клацніть файл правою кнопкою миші -> Виключити з проекту.
  4. Клацніть файл ще раз правою кнопкою миші -> Включити до проекту.

Це призводить до того, що Intellisense розбирає файл, який він пропустив під час перемикання гілок.


4

Наступне рішення працювало на мене

1 - Закрити VS

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

3 - Відкрити VS

4 - побудова рішення


3

Можливо, ви намагаєтеся скинути керований кеш. Я мав подібний випуск у візуальній студії 2012 року, коли працював у великому проекті з багатьма частковими визначеннями класу. Скорочення партій вирішило проблему частково, очистивши келіш інтелігенції також - на деякий час.


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, Змішані платформи тощо) на AnyCPU .

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


1

Для мого конкретного випадку це була посилання на сервіс, який інший розробник об'єднав у основну гілку. Що було абсолютно чудово, за винятком виділення синтаксису, не вдалося вирішити створений клас обслуговування, а джерело було підкреслено червоним кольором. Очищення, відновлення, перезапуск нічого не зробили.

Все, що мені потрібно було зробити, - оновити довідку про службу, і VS встиг зібрати шматки за кадром. Немає змін у вихідному коді чи створених файлах.


1

Я щойно зіткнувся з цим питанням після повернення git-комітету, який додав файли назад у мій проект.

Очищення та відновлення проекту не спрацювало, навіть якщо я закривав VS між кожним кроком.

Що в кінцевому підсумку спрацювало, було перейменування файлу на щось інше і його знову повернення. : facepalm:


1

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

Спосіб 1:

Клацніть правою кнопкою миші на оригінальному Zip-файлі -> Позначте "Розблокувати" -> Клацніть застосувати

Спосіб 2:

Якщо це не варіант, а не відкривати властивості для кожного файлу в папці рішення, просто відкрийте оболонку живлення та розблокуйте рекурсивно, використовуючи наступне:

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

1
  1. спочатку закрийте рішення.
  2. потім видаліть файл кеша рішення (у розташуванні C: \ Користувачі \ Документи \ Visual Studio \ Файли резервного копіювання / файл кешу проекту)
  3. потім .suo файл видалити
  4. потім рішення відкрити і скласти.

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


1

Виникла ця проблема на роботі (запуск VS2017). Спробував усі відповіді тут. Ніякої радості.

Проект склався б просто, але скаржився, що просторів / типів імен неможливо знайти. Червоні брязкальця всюди. Багато помилок у вікні списку помилок.

Моє рішення містило 3 проекти.

Виявлено, що 3 посилання на бібліотеку NuGet для одного з проектів вийшли з ладу. Об’єднав версії посилань на бібліотеку та Bingo.

Сподіваюся, що це комусь допоможе.

Бретт.



0

Іноді, якщо ви просто очищаєте рішення, помилки зникають, але вони з часом можуть повернутися через деякий час або при наступному складі.


0

Вийшов у цю проблему з одним типом, який не був розпізнаний Visual Studio, який показав червону викрутку, навіть незважаючи на те, що рішення побудовано успішно. Я помітив, що в Провіднику рішень у файлі не було стрілки розширення зліва, яка показує класи та властивості розширення.

Виправлення полягало в тому, щоб виключити файл із проекту та зберегти / скласти, що призвело до очікуваної помилки, а потім включити файл у проект та зберегти та скласти.

Після виконання цих кроків Visual Studio знову почав розпізнавати мій тип. З огляду на розбіжність у git, здається, проблема <Compile Include="..." />виникала через те, що закінчення рядків не збігаються в рядку мого .csproj-файлу.


0

у моєму випадку vs ніколи не зберігало імпортовані простори імен у властивостях проекту> посилання

коли я спробував їх додати / перевірити ще раз, я не зміг і vs викинув помилку, і коли збережений проект проти розбився. Коли я знову відкрив усі стандартні імпортовані простори імен (system.data тощо ...), то знову було поставлено галочки, і він розпізнавав усе без помилок


0

TL; DR: Провести чисту перевстановлення Visual Studio

Затративши кілька годин, я все одно не зміг виправити це для Visual Studio 2017. Після цього я встановив попередній перегляд Visual Studio 2019 і раптом 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

Спробуйте навести курсор миші на підкреслені елементи. Це, як правило, говорить про те, в чому проблема. Щоб побачити список всіх помилок / попереджень, перейдіть до Перегляд => Список помилок. У нижній частині IDE повинна відкритися таблиця з усіма переліченими помилками / попередженнями.


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