it-swarm.com.ru

Visual Studio: проект не обновлен ", потому что было указано" AlwaysCreate "?

Я перенес решение с VS2008 на VS2010 (SP1).
Теперь один из моих проектов никогда не находит покоя в обновлении. Каждая сборка имеет следующий вывод:

1>------ Build started: Project: PROJ_NAME, Configuration: Release Win32 ------
1>Build started 19/05/2011 7:59:27 AM.
1>InitializeBuildStatus:
1>  Creating "Release\PROJ_NAME.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1>  All outputs are up-to-date.
1>  All outputs are up-to-date.
1>Lib:
1>  All outputs are up-to-date.
1>  PROJ_NAME.vcxproj -> C:\projFolder.PROJ_NAME.lib
1>FinalizeBuildStatus:
1>  Deleting file "Release\PROJ_NAME.unsuccessfulbuild".
1>  Touching "Release\PROJ_NAME.lastbuildstate".
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:00.09
========== Build: 1 succeeded, 0 failed, 5 up-to-date, 0 skipped ==========

Есть идеи?

34
Hertzel Guinness

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

Затем средство проверки зависимостей считает, что проект не обновлен, но сборщик не находит ничего для сборки.

40
Bo Persson

У меня было два проекта, которые содержали один и тот же файл. Когда второй проект был собран, он снова скомпилировал файл, изменив «сенсорное» время и дату. Это, в свою очередь, установить флаг «AlwaysCreate» для первого проекта.

Я узнал об этом, включив «CPS» в моем файле «C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config», как в приведенном ниже фрагменте xml. После активации вы можете использовать инструмент DebugView для получения сообщений от VS2010, в которых указано, ПОЧЕМУ он перестраивает ваш проект. Почему эти сообщения не попадают в журнал сборки, я не знаю, но в любом случае это так. 

Добавь это:

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

Сюда:

<?xml version ="1.0"?>
<configuration>
    <configSections>
        <section name="msbuildToolsets" type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection, Microsoft.Build.Engine, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </configSections>
    <system.diagnostics>
      <switches>
        <add name="CPS" value="4" />
      </switches>
    </system.diagnostics>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0.30319" />
34
Bzzt

Согласно это поток на MSDN:

В моем случае в VS10 это происходило из-за отсутствия (но несоответствующих .h файлов, таким образом, никакой дополнительной ошибки для идентификации) в папках проекта.

Быстрая проверка, что все файлы проекта могут открываться в редакторе, исправила эту проблему.

9
Oded

Вы должны проверить и другие файлы, кроме .h. В моем проекте Readme.txt был пропущен.

2
Jacek

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

Я искал все файлы .vcxproj, использовал DebugView с CPS = 4 (см. Ответ @ Bzzt выше) и обнаружил, что он ищет заголовочные файлы в их СТАРОМ местоположении. Поскольку решение было перемещено, а не скопировано, эти файлы не существовали.

То, что наконец решило это для меня, очистило решение и сделало одно восстановление. После этого «AlwaysCreate» больше не вызывал «сборку» всех подпроектов. Вы должны очистить каждую конфигурацию (отладку и выпуск) отдельно, но как только она была восстановлена ​​из чистого состояния, все в порядке.

В моем случае он фактически не создавал каких-либо сборок, но MSBuild или что-то еще решало, что вещи устарели, использовал какой-то кешированный путь к файлу, которого больше не было. Очистка и перестройка заменили этот кеш, а затем он собран, как и ожидалось

2
boatcoder

Для сборки командной строки msbuild.exe вы можете использовать/verbosity: подробный и искать выход для 

  • "будет скомпилировано как", чтобы найти компиляции
  • «Требуется компиляция исходного кода» для поиска ссылок

Примечание. Вывод может быть передан в файл с помощью msbuild.exe/verbosity: подробный> output.txt

например.

code.cpp will be compiled as C:\path\to\header.h was modified at 18/02/2016 15:58:31.
Outputs for C:\path\to\code.cpp:
0
Shane Gannon

В Visual Studio 2010 я устранил ложные перестройки многопроектного решения, оставив многопроцессорную компиляцию (/ MP) неустановленной (жаль!). Раньше у меня это было включено. Найдите флаг здесь: Общие свойства> C/C++> Общие> Многопроцессорная компиляция. Кроме того, я заметил, что мне удалось устранить ложные перестройки отдельных проектов, перестраивая каждый проект в отдельности; затем сборка каждой из них показала, что каждая из них была актуальной.

0
Vince

У меня та же проблема.

Основная причина: неверная версия сборки VS (32-битная и 64-битная)

Решение: переключите режим Debug/Release с 32-разрядного на 64-разрядный или наоборот.

http://postimg.org/image/3jurey1qr/

0
zizopen

Вы также можете обнаружить, что это происходит после обновления Windows, смотрите это: Обновленные проекты, скомпилированные снова, потому что отметка даты TZRE.DLL находится в будущем после обновления Windows

Решение состоит в том, чтобы подождать до этого времени, и проблема волшебным образом исчезнет . У меня была такая же проблема, мой файл TZRES.DLL 17/07/2018 19:54, время сейчас 17/07/2018 15:15

0
GilesDMiddleton

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

В прошлом я успешно использовал DebugView в VS2010 для поиска файлов для удаления, но сегодня такой подход не сработал. Я не смог найти ЛЮБУЮ ссылку на отсутствующие заголовочные файлы, найденные с помощью DebugView, в любом из моего кода или файлов проекта XML. Я также получил устаревшие файлы из TFS, чтобы попробовать их как присутствующие, так и отсутствующие на моей машине.

Затем я использовал GREP для поиска по всему каталогу решений, и единственные результаты были в двоичных файлах: файлы старого кода * .obj, файлы проекта * .pdb и vc100.idb. Я не знаю, как эти файлы модифицируются/заменяются во время сборки и перестройки, поэтому я не уверен, что предыдущая ссылка в одном из этих файлов была причиной того, что старые заголовочные файлы отсутствовали. 

Надеюсь, что это поможет кому-то в будущем, и спасибо за вышеупомянутую информацию, которая заставила меня начать!

0
Matthew Lowe