PostBuild работает всегда, даже когда все обновлено - PullRequest
3 голосов
/ 20 марта 2012

У меня есть решение VisualStudio 2010, содержащее множество проектов на C ++ (более 100). Многие из них с некоторыми строками в событии PostBuild (копирование файлов и многое другое). Проблема возникает при сборке решения на нашей сборочной машине с использованием определения сборки tfs:

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

Чтобы сузить проблему (и исключить любую возможную проблему со ссылкой на несуществующие файлы и т. Д.), Я создал новый файл решения и добавил в решение новый проект консольного приложения C ++ с помощью мастера проектов VisualStudio. Единственное, что я изменил по умолчанию, - это строка в событии PostBuild: эхо «Вывод PostBuild» (просто чтобы увидеть в файле журнала, когда PostBuild был запущен).

Затем я создал новое определение сборки, запустив это решение. И все же PostBuild активируется, даже если проект обновлен. Та же проблема возникает, если я создаю файл решения, выполняющий msbuild, в командном окне. Но сборка из VisualStudio работает отлично.

Кто-нибудь может дать мне несколько советов о том, как избежать этого PostBuild, когда проект «актуален»? (Я проверял, что Linker OutputPath соответствует значению $ (TargetPath) при сборке на компьютере сборки.)

...