Ответ 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 файлы..... они будут повторно сгенерированы при следующем сборке... и с этого момента вы не получите фикцию "из дата файлы" сообщение.... если они действительно устарели.