Как найти причину неудачной сборки без ошибок или предупреждений


159

У меня есть веб-приложение, которое содержит ссылку на службы WCF.

При сборке с использованием Visual Studio 2010 сборка завершается ошибкой без каких-либо ошибок или предупреждений. Однако построение .csprojиспользования MsBuildуспешно.

Не могу понять, что мне попробовать в Visual Studio, чтобы решить / диагностировать проблему. Не могли бы вы помочь?

РЕДАКТИРОВАТЬ:

Я обнаружил, что сборка дает сбой,

  1. Из текста, отображаемого в строке состояния.
    введите описание изображения здесь

  2. Из окна вывода:

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

5
как узнать, что ваша сборка не работает?
Сэм Я сказал: "Восстановите Монику"

5
Есть что-нибудь во вкладке вывода?
Malice

15
Попробуйте повысить уровень детализации окна вывода в Visual Studio. Это может помочь определить проблему. Как повысить уровень многословности: blogs.msdn.com/b/saraford/archive/2008/10/07/…
Максим Корнилов

6
Вы пробовали перезапустить VS2010 или даже перезагрузить компьютер?
comecme

2
@NahuelI. У меня снова возникла аналогичная проблема в другом проекте, когда я искал stackoverflow, я получил ответ на свой вопрос :-)
Abhijeet

Ответы:


130

Просто столкнулся с похожей ситуацией. В моем случае настраиваемое действие (из пакета MSBuildVersioning, доступного на Nuget.org - http://www.nuget.org/packages/MSBuildVersioning/ ), которое появилось в целевом объекте BeforeBuild файла csproj, приводило к сбою, не вызывая сообщения об ошибке в нормальное место.

Я смог определить это, установив для параметра «Подробность вывода сборки проекта MSBuild» (на вкладке «Инструменты» последней версии Visual Studio [Путь: Инструменты> Параметры> Сборка и запуск ]) значение « Диагностика », как показано ниже. Затем это показало, что пользовательское действие (в моем случае HgVersionFile) было неудачным.

Снимок экрана из Visual Studio, показывающий измененный параметр.


2
Отличная находка Ричард - Действительно полезная информация, когда вы устанавливаете оба уровня детализации на диагностику
Дай Бок

3
Для тех, кто невежественен, как я: чтобы использовать этот метод, вам, возможно, придется искать содержимое окна вывода. Мои ошибки сборки скрывались #pragma warning disableоператорами и были видны только тогда, когда я искал «ошибка» в окне вывода.
sirdank

Установив диагностическую подробность, я обнаружил, что получаю System.OutOfMemoryException. Я использовал 98% доступной памяти моего компьютера. Это отличный ответ!
TxRegex

1
Это также решает проблему с VisualStudio 2017. Большое спасибо.
Х. Айдын

1
Для меня я использовал Queue New Build для создания на TFS, а диалоговое окно Queue Build имеет подробное описание на второй вкладке, которую я мог открыть, а затем увидеть проблему в журнале сборки.
AaronLS

159

Build + Intellisense проглатывает сообщения об ошибках. При выборе « Только сборка» они отображаются.

Снимок экрана


1
Просто попал в ситуацию, когда ни один из них не показывает ошибку :(
Имад

1
Вау, это сработало для меня, черт возьми, это вещь в новой версии VS 2019. Спасибо чувак!
Картер,

1
@AbuAbdullah Работал на меня. Хорошая работа в помощи другим.
нам

62
  • Если решение содержит более одного проекта, попробуйте создавать их по одному.
  • Попробуйте перезапустить Visual Studio.
  • Попробуйте перезагрузить компьютер.
  • Попробуйте " Восстановить все "
  • Попробуйте « Чистое решение », затем удалите файлы « vspscc » и « vssscc », затем перезапустите Visual Studio, а затем « Перестроить все ».

116
А когда это не поможет, мне просто найти новую работу?
Алекс Жуковский

2
Мне помог просто перезапуск VS2013. Я работал над виртуальной машиной с ограниченными ресурсами, но не уверен, связано ли это с этим.
Jmaurier

2
Вы не можете очистить решение, если у вас возникла эта проблема.
Х. Айдын

2
Мне помогло закрытие всех экземпляров VS (недостаточно, чтобы закрыть неисправный), а затем удалить .vsпапку и снова запустить VS.
ЭлиШерер

1
Моим решением было стереть VS с моего диска и использовать блокнот
DudeManGuy

25

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


VS 2015 Community Win 7 с одним проектом MVC. То же разрешение.
maplemale

2
VS 2017 Community Win 10. Думаю, мне следовало попробовать выключить и снова включить его, прежде чем искать решение!
DreamTeK

VS 2019 Pro Win 7. Традиция продолжается. = (
ourmandave

1
Сообщество VS 2019 16.7.5, Windows 10. Некоторые вещи никогда не изменятся.
MadMarc,


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 - я исправил это, и, хотя сборка все еще не удалась, я смог увидеть ошибку, которая нарушала сборку. Спасибо.
Fijjit


3

Сначала «Очистите раствор», затем перестройте сол.

Если не работает, закройте Решение и перезапустите решение.

Попробуйте эти вещи, надеюсь, определенно сработает.


3

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


3

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


3

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

Панель ошибок

панель вывода


6
также выберите в фильтре ошибок «только сборку», а не «сборку + intellisense».
niico

3

У меня была такая же проблема, и я отследил эту проблему до параметров списка ошибок «Build + Intellisense».

Если выбран этот параметр, то в списке не отображаются ошибки. Переключитесь на « Только сборка », и ошибки появятся должным образом.

Это похоже на ошибку в Visual Studio. Перезапуск визуальной студии решил эту проблему .


3

Для меня это Target Frameworkбыло проблемой.

Мой проект Target Frameworkбыл, 4.5.2а упомянутый проект Target Frameworkбыл 4.6.1.

Как только я обновил свой проект Target Frameworkдо 4.6.1, проблема была исправлена.


Благодарность! Если вы не нашли конкретную ошибку, но подозреваете, что это проблема, вы можете попробовать изменить TF проекта на более высокий. Так было в моем случае.
Мариано Луис Вилла,

2

У меня была аналогичная проблема после добавления нового проекта (названного «TestCleaner») к моему решению: сбой сборки, ошибок нет.

Я увеличил подробность вывода (см. Инструкции Ричарда Дж. Фостера) и поискал в выводе «сбой». Я быстро обнаружил, какой проект не удался и почему: проект «TestRunner» завершился неудачно с « ошибкой CS0246: не удалось найти тип или имя пространства имен« TestCleaner »» (хотя в коде не было выделено никаких проблем).

Проверяя ссылки TestRunner, мы убедились, что ссылка на TestCleaner была помечена как неразрешенная, а путь отсутствовал в свойствах ссылки. Удаление и повторное добавление не помогло. И снова без объяснения причин.

неразрешенная ссылка

Я наконец обнаружил причину: «TestCleaner» использовал другую целевую структуру по сравнению с другими проектами. Это был .Net 4.5.2; остальные - 4,5.


2

У меня такая же проблема. В окне списка ошибок есть 2 раскрывающихся списка: «Показать элементы, содержащиеся в» и «Показать сгенерированные проблемы». Эти имена видны после наведения курсора на раскрывающийся список. В раскрывающемся списке «Показать сгенерированные проблемы» было установлено значение «Build + IntelliSense», и после изменения на «Build Only» ошибки появились в списке.


2

Попробуйте собрать свой проект из командной строки Powershell:

dotnet build

Тогда вы сможете увидеть любые ошибки в выводе командной строки, даже если Visual Studio играет в прятки с сообщениями об ошибках сборки.


1

Я столкнулся с такой же проблемой! Просто удалите папку bin и перезапустите файл VS. Вот и все. протестирован в VS 2013.


Когда я попытался решить эту проблему, удалив папку bin и obj, он исправил это. Также мне потребовались права администратора, чтобы удалить папку obj, поэтому произошло что-то очень странное.
DAG

1

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

Также, возможно, важно сказать, что, хотя ошибки не отображались на панели «Список ошибок», они по-прежнему присутствовали в выходных данных сборки.


1

В Visual Studio 2019 мне пришлось «Запускать от имени администратора», и, наконец, все было нормально. Итак, откройте приложение от имени администратора (щелкните правой кнопкой мыши - запустите от имени администратора).


1

Со своей стороны, у меня возникла эта проблема, когда я добавил новый проект (библиотеку)

Как я это решил

Щелкните правой кнопкой мыши новую добавленную библиотеку, перейдите в «Свойства», затем «Приложение», в разделе «Приложение» измените целевую платформу на структуру всех проектов.

Проблема в том, что у вас есть проект с использованием разных целевых фреймворков.


1

Недавно я столкнулся с той же проблемой, я также пробовал так много вещей, как перезапуск Visual Studio, очистка и перестройка решения, перезагрузка ПК и т. Д. (Прежде всего убедитесь, что все проекты в вашем решении нацелены на одну и ту же версию .NET.)

но, видимо, у меня ничего не работало, поэтому я сделал это ..

1- сохранить ожидающие изменения в проекте и закрыть Visual Studio,

2- найдите точное местоположение в проводнике, найдите файл "obj" и откройте его, введите описание изображения здесь

3- затем удалите все включенные файлы (некоторые файлы не удаляются, это не имеет значения, просто пропустите их) ,

4- затем используйте команду запуска (нажав Windows Key + R), введите «% temp%» и нажмите Enter, чтобы найти временные файлы,

5- затем удалите их все.

это сработало для меня.


0

Это случилось со мной после добавления новой страницы в проект asp.net.

Я исключил страницу и заставил ее снова успешно построить.

Затем я добавил страницу со всем закомментированным кодом. Успех.

Потом я по крупицам раскомментировал код, и все заработало.


0

У меня была такая же проблема после удаления нескольких форм. Ошибки возникли, когда я вошел в код и выполнил «Показать определение» для одного из удаленных элементов управления.

Я также нацелился на более высокий фреймворк в одном из моих проектов, так что, возможно, это тоже было проблемой.


0

Я пробовал все, но в моем случае ничего не работало, тогда я изменил эти упомянутые настройки, которые довольно хорошо решили проблему для меня. Попробуйте, если это может помочь последним зрителям. Эти параметры могут отличаться в зависимости от ситуации, но убедитесь, что при сборке всех включаемых библиотек DLL те же параметры конфигурации, которые вы сохранили изначально (упомянутые на изображении).Настройки конфигурации

Изображение здесь.

Ура!


0

Если установлен пакет nuget «Microsoft.Net.Compilers», убедитесь, что он подходит для версии вашей Visual Studio (версии Build Tools).

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

Поэтому не обновляйтесь до версии выше 1.x, если вы используете VS2015

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


0

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

В Visual Studio 2015 я включил подробный MSBuild в разделе ИНСТРУМЕНТЫ> Параметры> Проекты и решения> Сборка и запуск.

Он дал мне немного информации о сборке, но без ошибок. После этого я попытался проверить расширения и обновления (Инструменты> Расширения и обновления) и обнаружил, что некоторые из них нуждаются в обновлении.

Пакет Nuget был виновником, после обновления Nuget - сборка прошла успешно.

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



0

Так как все не работало, обнаружил, что ошибки не отображаются при открытии проекта как решения (.sln), тогда как ошибка отображается при открытии проекта как проекта.

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