VS2010 всегда пересматривает проект

Я переношу сложное смешанное решение С++/.NET из VS2008 в VS2010.

Обновленное решение работает в VS2010, но система сборки всегда решает одну сборку С++/CLI. Он не перекомпилирует ничего, но компоновщик касается файла. Причиняет эффект пульсации вниз по течению в сборке как целой группы зависимых, а затем восстанавливается.

Любые идеи о том, как узнать , почему думают, что ему нужно перевязать файл? Я включил подробный журнал сборки, но ничего не выделяется.

Ответ 1

Оказывается, проблема была в том, что имя файла PDB было определено в и настройках компилятора и настройках компоновщика (с тем же именем).

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

Удаление настроек имени pdb, похоже, устранило проблему, и значения по умолчанию были в порядке.

Ответ 2

Я просто добавляю это для записи, если кто-то еще столкнется с этой проблемой в будущем.

У нас была аналогичная проблема с крупным смешанным проектом FORTRAN/С++, связанным с изменением или изменением. Кажется, он начался, когда решение было обновлено с VS2008 до 2010 года, хотя никто не мог вспомнить.

В конце концов, я серьезно посмотрел на него (это было неприятно, но недостаточно, чтобы что-либо сделать). По способу устранения я нашел решение:

Удалите любые кавычки в "дополнительных библиотечных каталогах" проекта верхнего уровня FORTRAN (т.е. того, который делает исполняемый файл).

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

  • Откройте новый сеанс VS2010.
  • Создайте новый проект FORTRAN, который сделает исполняемый файл.
  • Оставьте его пустым, но свяжите его с не-встроенным файлом lib (т.е. одним из ваших) и добавьте каталог библиотеки в дополнительные библиотеки.
  • Проверьте правильность компиляции и ссылок.
  • Теперь попробуйте добавить двойные кавычки ( ") по каталогу и несколько раз нажмите" Построить ". Если ваш сеанс похож на мой, то он будет повторно появляться каждый раз. Когда вы удаляете кавычки, он останавливается.

Это только кажется проблемой в проекте верхнего уровня, и когда эти проекты являются FORTRAN - кавычки не влияют на проекты на С++ или те, которые создают библиотеки.

Повторение не происходит, если VS не нужно искать libs (например, если все ваши библиотеки встроены, например kernel32.lib), но будет происходить независимо от того, находится ли ваша lib в каталоге с кавычками или другой.

Если кто-то может оправдать эту "особенность", пожалуйста, дайте мне знать!