Почему мои шаги пользовательской сборки не выполняются в Visual Studio?

У меня есть проект Visual Studio с несколькими шагами Custom Build, но некоторые из них просто не запускаются. Там нет ошибок и предупреждений, и в соответствии с журналами сборки они работают, но они определенно нет.

(Все версии работали в версиях Visual Studio до 2010 года, но в Visual Studio 2010 и более поздних версиях это не так.)

2 ответа

Решение

Причина, по которой он не работает, заключается в том, что в том же проекте есть еще один пользовательский шаг сборки, который вызывает пакетный файл, например:

Командная строка: buildsomething.batthing.h
Описание: Строим что-то
Выходы: что-то

Начиная с Visual Studio 2010, все пользовательские команды сборки объединяются в один пакетный файл, который затем выполняется. Когда пакетный файл запускает другой пакетный файл, Windows не возвращает управление первому пакетному файлу. Это как goto, а не вызов функции. Таким образом, чтобы решить проблему, вам нужно использовать call как это:

Командная строка: вызов buildsomething.batthing.h

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

(Я отвечаю на свой вопрос, чтобы будущие искатели могли найти ответ.)

Убедитесь, что ниже двух файлов в хорошем состоянии. Лучше сравнить эти файлы с рабочей установкой VS.

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Platform.targets

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets
Другие вопросы по тегам