Проект Visual Studio устарел

Я пытаюсь заставить Visual С++ работать, но я получаю эту ошибку при создании каждого проекта: "Этот проект устарел" "Хочешь его построить?" Он не может создавать каждый раз.

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

Я выполнил следующие инструкции: http://blogs.msdn.com/b/vsproject/archive/2009/07/21/enable-c-project-system-logging.aspx и включил ведение журнала.

Я получаю эту ошибку: проект не обновляется, потому что "вставить имя файла здесь". отсутствует.строить состояние.. Обратите внимание, что в реальной визуальной студии ничего не регистрируется. Я не смог найти что-либо в этом в google. Возможно, я неправильно включил ведение журнала, но я чувствую, что это ошибка.

Ответ 1

Что такое файлы tlog?

"tlog" файлы создаются процессом "Tracker.exe", который выполняется во время сборки, и записывает некоторую информацию о сборке.

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

Что вызывает проблему "устаревшего"?

Проблема может быть вызвана неправильной или устаревшей информацией в файлах *.tlog.

Существует 3 основных способа:

1) Вы создали проект на своем жестком диске, а затем переместили каталог в другое место... файлы "tlog" записывали пути старого местоположения, но поскольку вы перемещали файлы, их больше нет, таким образом, вы получаете "устаревшие".

2) В вашем "Проекте" есть ссылки на файлы (обычно заголовочные файлы), которых нет в указанном месте. Это может произойти, если вы удалили файл из исходной системы управления, но забыли удалить его из своего проекта или потому, что ссылаетесь на файлы заголовков библиотеки, которые могут быть "установлены" /присутствовать в другом месте. Часто разработчики предполагают, что файлы находятся в одном и том же "месте" на каждой машине... не всегда в этом случае!

3) Вы сделали "рефакторинг" своего проекта и переместили файлы в разные подкаталоги или даже переименовали их, поэтому пути/имена файлов, записанных в "tlog" , не соответствуют тому, что существует на вашем диск, т.е. устаревший.

Каков способ его исправить?

Выполнение "Clean + Build" или "Rebuild" не всегда фиксирует это... поскольку эти операции не удаляют файлы "tlog" . Итак:

  • удалите все файлы "tlog" , которые вы можете найти в своих каталогах решений/проектов и перестройте.

  • убедитесь, что ваш проект не ссылается на несуществующие файлы

Как я могу определить, какие файлы не существуют?

Если вы хотите узнать/узнать, какие именно файлы Visual Studio думают устарели, тогда вы можете включить некоторую диагностическую информацию в Visual Studio.... и посмотреть сообщения в DebugView... показывая полное путь к файлам, которые он зондирует.

В devenv.exe.config вы помещаете:

<system.diagnostics>
      <switches>
        <add name="CPS" value="4" />
      </switches>
    </system.diagnostics> 

Подробнее

Предположим, вы создали решение и набор проектов в определенном каталоге, например. S:\MYPROJECTS, и вы компилируете и запускаете/отлаживаете его и т.д.

Затем вы решите переместить весь этот каталог в другое место на своем диске или перегруппировать свои проекты, например. изменить их имена каталогов и т.д.

Теперь, когда вы выполняете "Начать отладку /F 5", Visual Studio выполняет зависящую проверку и думает, что у вас есть "устаревшие файлы".

Даже если вы выполняете "Чистое решение" или "Реконструкция решения"... вы все равно получаете сообщение "устаревшие файлы".

Смотрите здесь:

Проблема вызвана файлами ".tlog", с которыми консультируются во время проверок зависимостей... при перемещении решений/проектов (вместе с промежуточными файлами сборки) они вызывают путаницу с компоновщиком Visual Studio.

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

Ответ 2

Вы должны позволить Visual Studio рассказать вам, почему нужно перестроить. Visual Studio 2015 имеет поддержку для этого:

  • Инструменты (меню)
  • Параметры
  • Проект и решение
  • Сборка и запуск

Измените многострочный вывод сборки проекта MSBuild на Подробный или Диагностика.

В моем случае он напечатал такое сообщение:

1>------ Up-To-Date check: Project: xyz, Configuration: xyz ------
1>Project not up to date because build input 'C:\ws\Missing.h' is missing.

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

Чтобы получить эту информацию в старых версиях Visual Studio, вам нужно использовать DebugView и изменить devenv.exe.config (см. ответ Колина Смита: fooobar.com/questions/34931/...). Обратите внимание, что это решение НЕ работает для Visual Studio 2015.

Ответ 3

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

Ответ 4

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

Ответ 5

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