Как определить, почему Visual Studio может пропускать проекты при создании решения

95

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

1> ------ Пропущено перестроить все: Проект: pr1lib ------

Как я могу определить, почему эти сборки были пропущены? Я не могу найти дополнительную информацию.

Это с VS2008, и решение состоит из кода C # и C ++.

Мэтт
источник
В дополнение к предоставленным ответам убедитесь, что в настройках конфигурации решения каждый проект находится в отмеченном состоянии (флажок установлен), который следует очистить / построить:Build > Configuration Manager: check as needed
Metro Smurf
2
Чтобы выяснить, почему проекты пропускаются. Не забудьте добавить /flв настройки сборки, чтобы получить файл msbuild.log с указанием причины. Например:skipped, due to false condition; ( ('$(Configuration)' == 'Release') and ('$(Platform)' == 'Any CPU') ) was evaluated as ( ('Debug' == 'Release') and ('AnyCPU' == 'Any CPU') ).
T_D 06
2
@T_D - где в Visual Studio я бы добавил '/ fl'? Где бы появился журнал? Если вы добавите это в качестве ответа, я буду поддерживать, поскольку большинство других ответов представляют собой различные случайные предположения для решения проблемы, а не ответ на исходный вопрос, который был просто о получении дополнительной информации о проблеме.
PaulG
@PaulG См. Мой ответ ниже. Просто установите настройки в опциях.
Даррен Вуд

Ответы:

88

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

[ править ]:
См. комментарий Kdt: ... когда я заглянул в свойства конфигурации ... цель сборки проекта была настроена для «Смешанных платформ», в то время как решение было настроено на сборку «Любой ЦП».

* Когда эта проблема случилась со мной, в основном проекте был только «Любой процессор», и он также установил дочернюю dll на «любой процессор», однако я удалил этот профиль и оставил только «x86». Выбирая x86 только для dll, она начинает работать
[/ edit]

Чами
источник
20
У меня была таинственная «Пропущенная сборка», и когда я заглянул в свойства конфигурации, проект действительно был помечен для сборки. Однако цель сборки проекта была настроена для «Смешанных платформ», в то время как решение было настроено на сборку «Любой ЦП» - изменение их для соответствия устранило проблему.
kdt
2
В моем случае, хотя для всех проектов и решения было установлено значение «Любой процессор», один проект не был построен. И только после того, как я установил решение на «Смешанные платформы», а затем обратно на «Любой процессор», оно будет построено. Глядя на разницу файла решения до и после, он изменился с {784BDC39-5783-4128-956E-99EA062FA8FB}.Debug|AnyCPU.ActiveCfg = Debug|AnyCPUна {784BDC39-5783-4128-956E-99EA062FA8FB}.Debug|AnyCPU.ActiveCfg = Debug|Any CPU. Единственное отличие - добавленный пробел между «Any» и «CPU» в конце строки.
Саймон Тевси
6
В моем случае для всех проектов был установлен параметр «Любой процессор», и проблема была решена путем удаления проектов (удаление проекта не приводит к удалению файлов) и повторного добавления их в решение.
Хамид Майели
40

У меня была та же проблема - «выгрузить проект» и «перезагрузить проект» решили проблему!

Шарон Бен-Авраам
источник
У меня такая же проблема, и выгрузка / перезагрузка работает, но проблема, похоже, возвращается, что раздражает, когда это происходит с кучей проектов, и вам нужно выгружать / перезагружать каждый из них ... Кто-нибудь знает, есть ли способ вообще этого избежать?
Liron
Это устранило для меня проблему, когда Visual Studio ошибочно сообщала о проектах как об уже обновленных в окне вывода при попытке выполнить сборку.
Кевин Лэйти
33

Операции сборки, восстановления и очистки пропускались. Выгрузка и перезагрузка не помогли, как и перезапуск Visual Studio.

Как только я удалил проект из решения и добавил его обратно, он больше не пропускается. Чтобы удалить его, в обозревателе решений щелкните проект правой кнопкой мыши> Удалить> ОК. Чтобы добавить его обратно, в обозревателе решений щелкните решение правой кнопкой мыши> Добавить> Существующий проект и выберите свой проект.

user1325179
источник
7
Имейте в виду, что вам придется повторно добавить все ProjectReferences в этот проект.
Джозеф
9

Если конфигурация x64 и компилятор x64 не установлен, он пропустит проект.

Дэйв
источник
1
+1 Гений. Вы можете найти SP1 здесь: microsoft.com/download/en/details.aspx?id=10986
ashes999 01
Если компилятор x64 не установлен, то вы даже не можете выбрать x64.
Calmarius
Конфигурации решения и проекта могут определять и использовать запись с названием «x64». Третий ddl для архитектуры процессора (цель платформы - на полпути вниз по странице свойств сборки) недоступен
StingyJack
9

Мое решение такое же, как упоминалось ранее: Удалить -> Добавить существующий проект

Но это решение подразумевает, что ссылки между проектами исчезают.

Чтобы избежать повторного добавления ссылок: и в случае, если вы используете систему контроля версий, такую ​​как GIT или TFS или что-то еще, можно достичь цели с помощью следующих шагов:

  1. Убедитесь, что все изменения зафиксированы / зарегистрированы перед операцией

  2. Пройти все проекты, удалив их из решения и добавив уже существующие.

  3. Обратите внимание, что файл .sln изменился

  4. Сохраните новый файл .sln, но отмените изменения во всех файлах .cspoj с помощью системы контроля версий.

Андрей К.
источник
8

Перезапуск Visual Studio помог

Мохаммад Фнейш
источник
5

Visual Studio 2008, это может быть потому, что 64-битный компилятор не был бы установлен.

Панель управления -> Программы и компоненты -> Microsoft Visual Studio 2008 professional -> [двойной щелчок]

В диалоговом окне Visual Studio

Далее -> Добавить / удалить функции -> (Под) Visual C ++ -> (выбрать) компилятор x64 и Инструменты

Аниш А.Р.
источник
4

Проблема существует и в VS 2010; из предложенных решений: редактирование конфигурации сборки, очистка, изменение / повторная смена целевого фреймворка НЕ ​​работают. Но выгрузка и перезагрузка проекта делает.

Марк Алсип
источник
4

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

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

Но каким-то образом мой файл решения был обновлен, как если бы общий проект был отдельной вещью, которую нужно было создать. Тогда я предполагаю, что всякий раз, когда я пытался построить и не менял код в общем проекте, он считал, что `` ничего не изменилось, пропустите эти сборки ''

Я нашел общий проект в solution.slnфайле, например:

Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Api.Common", "Api.Common\Api.Common.shproj", "{EC580471-D78A-4509-AC46-BD565553AD60}"

.. что нормально. Что не хорошо, так это то, что этот проект также появился в GlobalSection(ProjectConfigurationPlatforms) = postSolutionвиде:

    {EC580471-D78A-4509-AC46-BD565553AD60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
    {EC580471-D78A-4509-AC46-BD565553AD60}.Debug|Any CPU.Build.0 = Debug|Any CPU
    {EC580471-D78A-4509-AC46-BD565553AD60}.Release|Any CPU.ActiveCfg = Release|Any CPU
    {EC580471-D78A-4509-AC46-BD565553AD60}.Release|Any CPU.Build.0 = Release|Any CPU

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

PaulG
источник
Большой! Это было оно! Я удалил все строки из файла .sln, которые начинались со строки, в которой говорилось только «Global», и удалил все строки до «EndGlobal». Потом снова заработало.
Тед
Когда я удалил их, они были добавлены автоматически, когда я построил решение, однако они вернулись со всеми четырьмя записями, равными Debug | Any CPU. Но это решило мою проблему.
EspressoBeans
Это тоже была моя проблема. Я удалил все записи конфигурации сборки, связанные с общим GUID проекта, и компиляция снова заработала. Очень непонятно.
Zoop
3

Эй, только что починил. Думал, что это может помочь. Скорее всего, вы не установили соответствующие компиляторы вместе с Visual Studio. Это случилось со мной сегодня - по умолчанию установщик VS 2008 не устанавливает компилятор x64 C ++.

Если у вас есть SP1, удалите его перед изменением установки VS. Когда закончите, снова установите SP1.

Сергей Мальгин
источник
2

Перейдите в меню сборки и выберите «диспетчер конфигурации». Это покажет, какие проекты настроены для сборки в выбранной вами конфигурации.

1800 ИНФОРМАЦИЯ
источник
2

Со мной случилось нечто подобное. Я не уверен, в чем была проблема, но это не очистка , сборка , перестройка и т. Д. Я работаю в Visual Studio 2017 и мне нужна netstandard2.0сборка. Проблема для меня заключалась в том, что каким-то образом тип проекта был неправильным, возможно, я начал с netcoreappбиблиотеки классов, что-то в этом роде, застрял в файле решения , я не помню. В любом случае, я сделал резервную копию проекта, создал новый netstandardпроект библиотеки классов, учел резервные копии битов, и это исправило это за меня. HTH кто-то.

mwpowellhtx
источник
2
  1. Закрыть визуальную студию
  2. Откройте файл sln с помощью блокнота
  3. удалите все подобные вещи: {B546C55D-9321-4FC0-B25C-46844222BEBE}. Отладка с помощью подделок | x86.ActiveCfg = Отладка с подделками | x86 (их будет много)

4. сохранить файл 5. открыть визуальную студию и все лучше

Крис Хайнеманн
источник
2
Почему это помогает? Добавьте некоторые объяснения и будьте как можно более подробными, чтобы будущие читатели могли помочь понять, почему вам нужно было предпринять эти шаги.
2

Я обновился до 15.9.11, ... после некоторых сборок такая же проблема: большинство проектов пропускаются (которые собирались секунду назад без проблем). Выгрузка / перезагрузка решения всегда помогает в моем случае, но скоро это произойдет снова.

Понятия не имею, почему ... кроме большой ошибки в VS2017

Проверил диспетчер конфигурации, все галочки выставлены на сборку.

Возможно, это как-то связано с пакетами nuget, но это только предположение

В решении есть только c ++ / vcxproj, без csproj. 64 и 32 установлены как

Тимм
источник
2

Первое, что вам нужно сделать, это определить, почему сборка пропускает проекты. Итак, чтобы получить подробный вывод сборки, измените подробность на detailedв следующем месте в Visual Studio.

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

Даррен Вуд
источник
8
К сожалению, настройки детализации не помогают. В выходных данных по-прежнему указано «пропущенный проект» без объяснения причин.
PaulG
1

Если бы та же проблема, выяснилось, что настройка проекта была для процессора Itanium, изменив его на Intel, исправил.

Sabuncu
источник
1

Возникла та же проблема с VS2005, все конфигурации были правильными. Он даже пропускал команду «Очистить проект».

Наконец, разгрузка / перезагрузка творит чудеса.

Пракаш
источник
1

Щелкните правой кнопкой мыши «Решение» в обозревателе решений, затем щелкните «Свойство» внизу меню. В окнах свойств щелкните Свойства конфигурации -> Конфигурация на левой панели, вы увидите список проектов на правой панели, убедитесь, что во всплывающем окне установлен флажок Сборка.

TonyXu
источник
1

Если ваше решение содержит файл проекта NuGet (* .nuproj), попробуйте выгрузить его, а затем перестроить решение.

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

ЧастыйГость
источник
0

Я обнаружил, что иногда, когда у вас установлена ​​целевая платформа, допустим, x86 в вашем решении и в ваших проектах, на самом деле проект не всегда выбирается.

Чтобы дважды проверить, перейдите в свойства проекта и посмотрите, можете ли вы выбрать эту платформу в настройках Build-> Platform, если вы не можете, тогда вам нужно будет перейти в диспетчер конфигурации и создать эту конфигурацию.

TriStar
источник
0

У меня была эта проблема с некоторыми проектами Windows CE на новом ПК. «Выгрузить проект» и «Перезагрузить проект», казалось, решили проблему, но на самом деле Visual Studio просто переключилась на другую платформу и построила ее.

Оказалось, что хотя моя платформа WinCE была показана как активная платформа, Visual Studio «на самом деле» ее не видела. Решением было переустановить WinCE SDK с привилегиями администратора :

  • Убедитесь, что Visual Studio 2008 не запущен.
  • Откройте «Командную строку Visual Studio 2008» от имени администратора. В Windows 7 просто щелкните ярлык правой кнопкой мыши и выберите параметр «Запуск от имени администратора».
  • Введите следующую команду: msiexec /log SDKInstallLog.txt /package <the path to your .msi file>
  • Когда вас спросят, хотите ли вы сделать выборочную или полную установку, выберите пользовательскую и дайте установщику указание пропустить установку документации (в моем случае этот шаг не был необходим; на самом деле я просто попросил его «восстановить» существующую установку. )
  • Установить
Qwertie
источник
0

VS 2008 пропустит целевые объекты x64, если у вас не установлен компилятор x64. VS 2008 не работает по умолчанию. Типа черт, вещь.

user2869030
источник
0

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

Щелкните правой кнопкой мыши проект в файле решения, выберите свойства, вкладку приложения, измените целевую платформу с 4.0 на 3.5.

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

Элмер
источник
0

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

Фарб
источник
0

У меня была эта проблема в Visual Studio 2017 15.9.4, и после некоторого поиска и некоторого времени я обнаружил, что в моем решении файл .csproj одного из проектов был поврежден после слияния в TFS. (Я мог строить другие проекты, выгружая проблемный проект из решения). Как я решил свою проблему, я сравнил файл .csproj до и после слияния и исправил это. И под исправлением я имею в виду, что поскольку мой собственный проект был .netStandard, я удалил ненужные строки, включая Configuration PropertyGroup , все и другие в новом файле .csproj, чтобы сделать его похожим на предыдущую версию в стиле .netstandard.

ВахидШир
источник
0

У меня была аналогичная проблема, у меня был один проект, который по какой-то причине не мог загрузить в обозревателе решений. Когда я загрузил этот проект, он работал как шарм.

Гаурав Йол
источник
0

Я только что попал в такую ​​беду:

Обновил VS 2017 до последней версии 15.9.11, и некоторые из моих проектов были обновлены до .net core 2.2. Сначала я загрузил все проекты, пробовал построить / очистить / перестроить, и все было пропущено. Выполните следующие действия, чтобы решить:

  1. Я выгружал каждый проект и перезагружал их.
  2. Закройте все экземпляры VS и откройте VS от имени администратора (щелкните правой кнопкой мыши ярлык и выберите параметр «Запуск от имени администратора»)

Вот и все вернулось в действие, и я смог успешно построить все проекты.

четан
источник
0

Визуальная студия 2017

После добавления конфигурации в Configuration Manager

Щелкните правой кнопкой мыши Project -> Project Only -> Build Only / Rebuild Only / Clean Only

если все остальные настройки верны.

mail2subhajit
источник
0

Проблема: Rebuilding, Build, Clean пропускала все мои проекты, кроме двух из них.

Решения, которые у меня не сработали:

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

  2. Разгрузка и перезарядка не прошли.

Причина возникновения:

Это произошло потому, что целевая платформа .NET была выше (4,7) для этих двух проектов, но ниже для других проектов. Изначально появилось приглашение с просьбой установить .NET 4.7, что я и сделал, но оказалось, что он не смог распознать, что он установлен, не перезагружая мою машину.

Решения, которые сработали:

  1. Перезагрузка моей машины сделала свое дело. После перезапуска правильно распознал, что .NET 4.7 установлен.
  2. В качестве альтернативы, понижение целевой структуры проекта, щелкнув правой кнопкой мыши проект -> Свойства -> Приложение -> Целевая платформа и установив его так же, как другие проекты, которые пропускались, также решило проблему.

Я бы рекомендовал установить последнюю версию .NET Framework и перезапустить компьютер, чтобы избежать дальнейших проблем.

Сонали Агравал
источник
0

Он пропустит сборку любых проектов, у которых есть зависимые проекты, которые не удалось построить.

mcmillab
источник