VS2008 - проект устарел, ни строчки кода не изменились

У меня очень странная проблема с Visual Studio 2008. Я искал здесь, в SO, аналогичные проблемы с диалоговым окном «Project Out of Date», но их проблема заключалась в том, что либо они использовали файл заголовка, который устарел / больше не существует, либо их проблема возникла при создании многопроектного решения, либо у него были другие зависимости.

Мой проект - это консольное приложение Win32, я перешел в File-> New-> Project ...-> Win32 Console Application. Я использовал настройки по умолчанию (предварительно скомпилированный заголовок отмечен), и я не изменил ни одной строчки кода в проекте, как только проект был создан, я нажал кнопку отладки (хотя у меня возникает точно такая же проблема, когда я устанавливаю цель сборки для выпуска).

[main.cpp]

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

^ Очень стандартный исходный файл, правда? Что ж, независимо от того, что я создаю в любом проекте, VS2008 говорит мне, что он устарел. Почему? Возможно, эта проблема не помешает мне построить проект, но я бы очень хотел, чтобы все было в порядке и никогда больше не видел это диалоговое окно. Опять же, я посмотрел на похожие вопросы, но их решения включают удаление некоторых дополнительных зависимостей или чего-то в этом роде, ни одно из которых не применимо к моей ситуации.

Почему VS2008 может придраться к собственному шаблону проекта?


person Brandon Miller    schedule 06.09.2012    source источник
comment
Что происходит, если предварительно скомпилированный заголовок не проверяется?   -  person Jesse Good    schedule 06.09.2012
comment
Ничего особенного, просто хотел предоставить как можно больше информации. Единственное, что это означает, что заголовок будет компилироваться при каждой сборке, а не один раз компилироваться в файле .pch, при этом будет тот же диалог.   -  person Brandon Miller    schedule 06.09.2012
comment
Да, я знаю это. См. здесь, чтобы длинный список решений (в основном они должны быть применимы и к vs2008). Также прочтите свой BuildLog.htm и проверьте предупреждения и т. Д., Которые должны подсказать вам, в чем проблема.   -  person Jesse Good    schedule 06.09.2012
comment
Да, я неправильно понял, что вы имели в виду, говоря о том, что вы не знаете, что делают предварительно скомпилированные заголовки. И +1 для предложения BuildLog, я не подумал это проверить, но я уже удалил все тестовые проекты, которые давали мне предупреждение, я, наконец, только что проверил Не показывать мне этот диалог снова, что мне только что пришло в голову, что это причина, по которой я больше не получаю предупреждение facepalm (думал, что это исправлено, ха-ха)   -  person Brandon Miller    schedule 06.09.2012


Ответы (1)


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

person Steve Wellens    schedule 06.09.2012
comment
Извините, но я не совсем понимаю дату и время в будущем, вы говорите, что эта проблема как-то связана с фактической меткой времени в файлах? Я мог отредактировать свой пост, чтобы показать все включенные файлы. - person Brandon Miller; 06.09.2012
comment
Я говорю, это что-то проверить. Иногда на сервере, на котором установлена ​​система контроля версий, может быть неверная дата. Иногда это сторонний файл. Скажем, время даты в исходном файле (исходный файл, включенный файл заголовка или файл библиотеки и т. Д.) - 2050 00:00. Когда компилятор решает, что строить, он увидит, что объектные файлы и exe / dll-файл СТАРШЕ, чем исходный файл, и произведет повторную сборку. - person Steve Wellens; 06.09.2012
comment
Ладно, я понимаю, что ты имеешь в виду. Хотя я не использую систему управления версиями, и она сказала, что устарела при первой сборке только что созданного проекта. Я сделал несколько разных решений для тестовых проектов, первые 3 дали мне тот же диалог, а последний - нет. Странно. Но спасибо за объяснение, потому что я думал, что диалог означает, что что-то в проекте устарело, но теперь я вижу, что это связано с отметками времени, я пойду и приму это как ответ, поскольку теперь я лучше понимаю проблему , и по какой-то странной причине у меня его больше нет :) - person Brandon Miller; 06.09.2012