Як знайти причину невдалої збірки без будь-якої помилки чи попередження


145

У мене є WebApplication, який містить посилання на послуги WCF.

Під час створення за допомогою Visual Studio 2010, збірка не вдається без помилок чи попереджень. Однак побудова з .csprojвикористанням MsBuildуспішна.

Не можу зрозуміти, що мені слід спробувати у Visual Studio, щоб вирішити / діагностувати проблему. Чи можете ви допомогти?

Редагувати:

Я дізнаюсь, що збірка провалилася,

  1. З тексту, що відображається в рядку стану.
    введіть тут опис зображення

  2. З вікна виводу:

    ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

5
як ти знаєш, що твоя збірка провалюється?
Сем, я кажу: Відновіть Моніку

5
Чи є щось на вкладці виводу?
Маліса

15
Спробуйте збільшити багатослівність вікна виводу у Visual Studio. Це може допомогти визначити проблему. Як підвищити рівень багатослів’я: blogs.msdn.com/b/saraford/archive/2008/10/07/…
Максим Корнілов

6
Ви спробували перезапустити VS2010 або навіть перезавантажити ПК?
comecme

2
@NahuelI. У мене знову
з’явилася

Відповіді:


120

Я просто зіткнувся з подібною ситуацією. У моєму випадку користувацька дія (з пакету MSBuildVersioning, доступного на Nuget.org - http://www.nuget.org/packages/MSBuildVersioning/ ), який з'явився в цілі файлу csproj BeforeBuild, не вдався, не викликаючи жодного повідомлення про помилку в нормальне місце.

Мені вдалося визначити це, встановивши "MSBuild проекту багатозвучності виведення" (на останній вкладці Інструменти Visual Studio [Шлях: Інструменти> Опції> Створити та запустити ]) на " Діагностика ", як показано нижче. Потім це показало, що власні дії (в моєму випадку HgVersionFile) - це те, що не вдалося.

Захоплення екрана від Visual Studio, де відображені змінені настройки.


2
Відмінна знахідка Річард - Дійсно корисна інформація, коли ви встановлюєте обидва рівні багатослів’я на діагностику
Дай Бок

3
Для тих, хто не зрозумілий, як я: для використання цього методу вам, можливо, доведеться шукати вміст вікна виводу. Мої помилки побудови приховувались у #pragma warning disableвисловлюваннях і їх було видно лише тоді, коли я шукав "помилку" у вікні виводу.
sirdank

Після встановлення моєї багатослівності на діагностику я виявив, що отримую System.OutOfMemoryException. Я використовував 98% наявної пам’яті комп’ютера. Це чудова відповідь!
TxRegex

1
Це також вирішує проблему на VisualStudio 2017. Дуже дякую.
Х. Айдін

1
Для мене я використовував Queue New Build для побудови на TFS, а діалогове вікно «Черга збірки» має багатослівність на другій вкладці, яку я міг би з’явити, а потім побачити проблему в журналі збору.
AaronLS

135

Build + Intellisense проковтнув повідомлення про помилки. Вибір відображається лише для збірки .

Знімок екрана


Щойно потрапив у ситуацію, коли жодна з цих показів не показує помилки :(
Імад

1
Нічого собі, це працювало для мене, як у біса це річ у новій версії VS 2019. Спасибі людино!
Картер

1
@AbuAbdullah працював на мене. Гарна робота в наданні допомоги іншим.
наз

дякую, врятував мій день
Бікрам Лімбу

59
  • Якщо рішення містить більше одного проекту, спробуйте створити їх один за одним.
  • Спробуйте перезапустити Visual Studio.
  • Спробуйте перезапустити Комп'ютер.
  • Спробуйте " Відновити все "
  • Спробуйте " Очистити рішення ", потім видаліть файли " vspscc " та " vssscc " файли, а потім перезапустіть Visual Studio, а потім " Перебудуйте все ".

105
І коли це не допомагає мені просто знайти нову роботу?
Олексій Жуковський

2
Щойно перезапуск VS2013 мені допоміг. Я працював над ВМ з обмеженими ресурсами, але я не впевнений, що це мало щось із цим.
Jmaurier

2
Ви не можете очистити рішення, якщо виникли проблеми.
Х. Айдін

1
Що мені допомогло - закрити всі екземпляри VS (недостатньо для закриття несправної), а потім видалити .vsпапку та запустити VS заново.
EliSherer

22

Перезапуск VS (2013 Pro, Win 8.1) зробив це для мене.


VS 2015 Community Win 7 за допомогою одного проекту MVC. Та ж резолюція.
клен

2
VS 2017 Community Win 10. Напевно, я повинен спробувати вимкнути його і знову знову, перш ніж шукати рішення!
DreamTeK


9

Я хочу розкрити відповідь Сассе .

Щоб виправити проблему з Visual Studio 2015 Update 2, мені довелося складати кожен проект по одному та дивитись у вихідне вікно після кожної збірки.

Один проект дав мені

"Ім'я типу або простору імен" SomeNamespace "не існує в просторі імен" BeforeSomeNamespace "(не вистачає посилання на збірку?)".

У вікні списку помилок не було помилок, але у складі був жовтий попереджувальний знак під "Посилання".

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


1
Що ж, створення проекту за раз може не знадобитися, але одне - це точно: уважно подивіться у вихідне вікно (ще краще скопіюйте / вставте його в блокнот та використовуйте Ctrl + F find) для слова "відсутній". Це не відображається у списку помилок, але він впевнений, як пекло порушує ваше рішення. -.-
Довидас Навікас

5

Ніщо не працювало для мене, тому я видалив файл .suo, перезапустив VS, очистив проектоване, і тоді збірка запрацює.


5

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

Переконайтеся, що всі проекти у вашому рішенні націлені на одну і ту ж версію .NET.

Як і у OP, було 0 помилок, але збірка продовжувала працювати. Однак був один попереджувальний запис (похований між декількома сотнями марних попереджень XML ...), який говорить про те, що один проект орієнтувався на іншу версію .NET, ніж проект, на який посилався. Вся проблема полягала в тому, що один проект в рамках мого рішення був орієнтований на .NET 4.5.2, коли решта націлила 4.5.1. Він повинен працювати навіть з цією невідповідністю (отже, чому це було лише попередження), але, на жаль, це порушило збірку.

Дивна частина полягала в тому, що вона деякий час будувалась / працювала нормально, але раптом збірка почала виходити з ладу, що спричинило цю проблему. Не впевнений, що я зробив для цього, щоб почати скаржитися на різні цільові версії .NET, але я відчуваю, що у Visual Studio є лише деякі таємниці, які ніколи не вирішаться.


1
Виявляється, я додав новий проект, і він мав іншу .Net цільову рамкову версію - я виправив це, і, хоча збірка все ще не вдалася, мені вдалося побачити помилку, яка порушувала збірку. Дякую.
Фіджіт


3

Спочатку «Очистіть розчин», потім відновіть розчин.

Якщо не виходить, закрийте рішення та перезавантажте рішення.

Спробуйте ці речі, сподівання точно спрацює.


3

Інша можливість полягає в тому, що Visual Studio потрібно запускати як адміністратор, це може бути пов'язано з розгортанням на локальному сервері IIS або іншими потребами розгортання.


3

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


3

У мене була ця сама проблема, і я простежив цю проблему до списку помилок "Build + Intellisense".

Якщо цей параметр обраний, то в списку помилок не відображається. Перемкніть на " Тільки побудувати ", і помилки з'являться як очікувалося.

Його схожий на помилку у Visual Studio. Перезапуск візуальної студії вирішив це питання .


2

У мене виникла подібна проблема після додавання нового проекту (який називається "TestCleaner") до свого рішення: збір не вдався, помилок немає.

Я збільшив багатослівний вихід (див. Інструкції Річарда Дж. Фостера) і шукав вихід "Не вдалося". Я швидко виявив, який проект провалився, і чому: проект "TestRunner" зазнав невдачі з " помилкою CS0246: імені типу або простору імен" TestCleaner "не вдалося знайти" (хоча в коді не було виділено жодних проблем).

Перевіряючи посилання TestRunner, достатньо впевненості, що посилання на TestCleaner було позначене як невирішене, і шлях відсутній у референтних властивостях. Видалення та повторне додавання не виправили це. Знову ж таки, ніякого пояснення, чому.

невирішене посилання

Нарешті я виявив причину: "TestCleaner" використовував інші цільові рамки для інших проектів. Це було .Net 4.5.2; інші - 4,5.


2

Просто задля завершення і, можливо, допомагаючи комусь знову зіткнутися з тією ж помилкою, я використовував інтерфейс метро Mahapps і змінив XAML одного вікна, але забув змінити частковий клас у коді. У цьому випадку збірка не вдалася без помилки чи попередження, і мені вдалося це виявити, збільшивши багатослівність виводу з налаштувань:

Панель помилок

панель виводу


5
також виберіть у фільтрі помилок "лише побудувати", не "скласти + інтеліссенс".
niico

2

У мене була така ж проблема. У вікні списку помилок є 2 спадні меню "Показати елементи, що містяться" та "Показати створені проблеми". Ці імена видно після наведення курсору на спадне меню. У спадному меню "Показати створені проблеми" було встановлено значення "Створити + IntelliSense", і після зміни на "Тільки побудувати" в списку з'явилися помилки.


2

Для мене це Target Frameworkбуло проблемою.

Мій проект Target Frameworkбув 4.5.2і контрольний проект Target Frameworkбув 4.6.1.

Після того як я оновив мій приналежність проекту Target Frameworkдо 4.6.1, проблема була виправлена.


1

Я зіткнувся з тією ж проблемою! Просто видаліть папку бінь і перезавантажте свою VS. Це все. випробуваний в VS 2013.


Коли я спробував це вирішити, видаливши папку bin та obj, це виправлено. Також мені були потрібні права адміністратора, щоб видалити папку obj, щоб сталося щось дуже дивне.
DAG

1

Для мене це вирішило - видалення .vsпапки з кореня рішення та перезапуск Visual Studio.

Також, можливо, важливо сказати, що незважаючи на те, що помилки не відображалися на панелі "Список помилок", вони все ще були присутніми у "Виведення з збірки".


1

Спробуйте створити свій проект з командного рядка Powershell:

dotnet build

Тоді ви можете побачити будь-які помилки у виведенні командного рядка, навіть якщо Visual Studio відтворює хованки із повідомленнями про помилки побудови.


0

Це сталося зі мною після додавання нової сторінки до проекту asp.net.

Те, що я зробив, було виключити сторінку, змусити її знову створити успішно.

Тоді я додав назад сторінку з усім прокоментованим кодом. Успіх.

Тоді я коментував код побіжно, і тоді це все спрацювало.


0

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

Я також орієнтувався на вищі рамки для одного з моїх проектів, так що це могло бути і проблемою.


0

Я спробував все, але нічого не спрацювало в моєму випадку, тоді я змінив ці згадані налаштування, які досить добре вирішили проблему для мене. Спробуйте, якщо це могло б допомогти останнім глядачам. Ці налаштування можуть бути різними у вашій ситуації, але переконайтеся, що створити всі DLL-файли з тими ж налаштуваннями конфігурації, які ви зберігали спочатку (згадані на зображенні.).Параметри конфігурації

Зображення тут.

Ура!


0

Якщо встановлений пакет «Microsoft.Net.Compilers» встановлений, переконайтеся, що він відповідає версії Visual Studio (версія Інструменти побудови).

Версії 1.x означають C # 6.0 (Visual Studio 2015 та оновлення). Наприклад, 1.3.2

Тому не використовуйте VS2015 до версії вище 1.x

https://stackoverflow.com/a/44397905/3862615


0

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

У Visual Studio 2015 я ввімкнув докладний MSBuild у розділі TOOLS> Опції> Проекти та рішення> Створити та запустити

Це дало мені декілька деталей про збірку, але помилок не було. Після цього я спробував перевірити розширення та оновлення (Інструменти> Розширення та оновлення) і виявив, що деякі з них потребують оновлення.

Nuget Package став винним після оновлення Nuget - збірка успішна.

введіть тут опис зображення



0

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


0

У мене була та сама проблема, я змінив Інструменти -> Параметри -> Проекти та рішення / Створити та запустити -> MSBuild проекту журналу збірки файлів журналу [ Діагностика ]. Цей параметр показує помилку в журналі, через те, що мій VS не відображає помилку на вкладці Помилки!

введіть тут опис зображення

Виконайте вище налаштування та у вихідній копії в блокноті / текстовому редакторі та шукайте помилку. Він покаже вам всі помилки.


0

Перезапуск Visual Studio працював на мене. Також спробуйте перезапустити Visual Studio звичайно (не запускатись як адміністратор). Спробуйте перезапустити систему та повторіть вищевказаний крок.


0

Інший спосіб відтворення цього симптому:

Я додав новий проект до вже існуючого рішення, і вихідні дані збірки повідомляли про помилки типу "тип або ім'я простору імен X не вдалося знайти ...", але помилок у списку помилок не було.

Класи, на які я згадував, були в інших проектах (на які посилалися) у тому ж самому рішенні.

Виявилося, що я помилково вибрав більш ранній варіант .net у новому проекті. Одного разу я перейшов на ту ж версію, що й інші проекти, все побудовано без помилок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.