Событие предварительной сборки Visual Studio создает заголовок для решения, но не компилируется в зависимые проекты

У меня есть решение Visual Studio 2012, которое содержит 3 проекта: A.dll, B.exe и C.exe. Оба EXE-файла ссылаются на DLL, и DLL устанавливается как зависимость для обоих. Порядок сборки: A.dll, B.exe, C.exe.

У меня есть событие Pre-Build Event для A.dll: пакетный скрипт, который читает номер сборки из файла, увеличивает его и генерирует version_info.h, который содержит строковую версию номера сборки. Все три проекта включают этот заголовок и используют его для распечатки номера версии.

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

<PropertyGroup>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>

Это работает правильно для DLL. Тем не менее, EXE всегда печатают устаревший номер сборки. Например, это последовательность событий в сборке. Я проверил, что эти события распечатываются в указанном порядке в выходных данных сборки.

  1. Номер сборки в настоящее время 65 (хранится в файле).
  2. Я очищаю решение и перестраиваю.
  3. Событие предварительной сборки A.dll запущено.
    • Номер сборки увеличен до 66 (я повторяю это, чтобы построить экран вывода, чтобы быть уверенным)
    • version_info.h изменен
  4. A.dll построен
  5. B.exe построен
  6. C.exe построен

Когда я запускаю программы / dll, A.dll печатает номер сборки 66, но оба EXE-файла выводят 65.

Как значение 65 компилируется в exes ПОСЛЕ того, как заголовок уже обновлен до 66?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]