it-roy-ru.com

Visual Studio Project устарел

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

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

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

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

19
user1795223

Что такое файлы 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, и вы компилируете и запускаете/отлаживаете его и т.д.

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

Теперь, когда вы делаете «Начать отладку/F5», Visual Studio выполняет проверку зависимостей и думает, что у вас есть «устаревшие файлы».

Даже если вы делаете «Чистое решение» или «Восстановить решение» .... вы все равно получаете сообщение «Файлы устарели».

Посмотреть здесь:

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

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

25
Colin Smith

Вы должны позволить 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 (см. Ответ Колина Смита: https://stackoverflow.com/a/21759835/1941779 ). Обратите внимание, что это решение НЕ работает для Visual Studio 2015.

24
CrouZ

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

5
dankos

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

3
lucky zhao

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

1
Stephen Edmonds

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

0
yano