Как исправить сообщение Visual Studio «проекты устарели» каждый раз, когда я запускаю его - PullRequest
8 голосов
/ 26 мая 2009

У меня есть файл решения visual studio (2005) с 70 проектами.
Каждый раз, когда я нажимаю F5, чтобы запустить его, он сообщает мне, что 4 из проектов устарели, и спрашивает меня, хочу ли я восстановить их. Он делает это, хотя я только что сделал полную сборку.
Я понимаю (в принципе), что один из других проектов должен обновить то, от чего зависят эти проекты, но как мне узнать, что?

Существуют ли какие-либо инструменты, помогающие или какую процедуру следует выполнить, чтобы выяснить, что заставляет VS пометить эти проекты для перестройки?

UPDATE:
Для тех, кто интересуется, похоже, что мой компьютер был / есть проблема (мой HD недавно начал работать). Когда я попытался отследить проблему, последовательные пересборки начали генерировать ошибки компиляции. Я сделал чистку и сборку и получил огромное количество (явно ложных) ошибок. Одна перезагрузка позже с последующей перестройкой, все ошибки и проблемы с зависимостями исчезли.
Прошу прощения, пока я иду и делаю резервные копии всех моих важных файлов ...

Ответы [ 5 ]

7 голосов
/ 26 мая 2009

Я бы запустил нормальную сборку, два раза подряд. Во второй раз я установил для многословия MSBUILD значение «Нормальный» или выше (в «Инструменты-> Параметры», «Проекты и решения», «Построить и запустить». Я внимательно прочитал вывод, чтобы увидеть, что на самом деле создается второй раз.

На самом деле, теперь, когда я думаю об этом, если это действительно цикл, то некоторая часть того, что создается во второй раз, должна быть тем, что заставляет его строить в третий раз, и т. Д. Возможно, у вас есть пост-сборка шаг в одном из проектов, который касается сборки или другого ресурса, используемого в качестве входных данных для предыдущего шага. С 70 проектами в решении, что-то вроде этого было бы легко вызвать непреднамеренно, и трудно поймать. Возможно, вам придется узнать достаточно о MSBUILD, чтобы иметь возможность определить, когда один из его шагов решает, что его нужно построить, потому что что-то изменилось, а затем достаточно хорошо понять ваше решение, чтобы понять, что ничего не должно было измениться; затем, чтобы увидеть, что что-то изменилось , что не должно было измениться.

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

1 голос
/ 29 мая 2014

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

1 голос
/ 30 января 2014

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

1 голос
/ 12 декабря 2013

Более быстрый способ, чем многословие журналов Джона в Visual Studio 2013, - открыть дерево проекта обозревателя решений; у файлов, которые не были найдены, не будет маленького треугольника перед именем файла (с помощью которого вы обычно можете видеть список символов в этом файле).

Удалите эти файлы, и для меня сообщение AlwaysCreate ушло (вы увидите «AlwaysCreate», только если для подробного уровня установлено значение «Нормально»).

1 голос
/ 03 августа 2010

У меня была та же проблема с подключением .netmodule к моему проекту, который был выполнен с помощью пользовательского шага сборки. Оказалось, что я также связывал библиотеку C ++ и файл .netmodule был указан в той же строке во входных данных компоновщика.

Пример: .lib .netmodule

Insead из: .lib \ n .netmodule

...