Подавление C ++ 'Post-Build Event' при использовании msbuild - PullRequest
1 голос
/ 05 ноября 2008

Я использую msbuild для сборки проекта C ++ и хочу подавить «событие после сборки». Я пробовал следующие свойства без успеха:

/property:PostBuildEvent=
/property:VCPostBuildEventTool=

Ничего не изменится, а события после сборки все еще будут выполняться.

Кто-нибудь знает, как подавить эти (и потенциально другие) события с помощью msbuild?

Ответы [ 4 ]

3 голосов
/ 29 января 2009

Я только что понял, как это сделать. Есть 2 этапа:

Во-первых, если вы еще не запускаете процесс msbuild, используя пакетный файл, создайте пакетный файл, который вызывает процесс msbuild. Затем добавьте переменную в пакетный файл перед вызовом процесса msbuild. Примерно так:

set ISFULLBUILD=True
msbuild TFSBuild.proj >> BuildOutput.txt

Затем вам нужно изменить событие пост-сборки, чтобы оно что-то делало, только если переменная не установлена ​​или имеет неправильное значение:

IF NOT '%ISFULLBUILD%'=='True' copy /y $(TargetFileName) "..\..\..\..\..\..\Binaries\$(ConfigurationName)\"

В этом случае - TargetFileName (Whwhat.dll) будет скопирован только при сборке из Visual Studio. Но при сборке с использованием нового пакетного файла он НЕ будет выполнять команду после оператора IF.

0 голосов
/ 05 ноября 2008

Ack, похоже, что msbuild на самом деле вызывает vcbuild, который не так гибок, поэтому я думаю, что застрял.

0 голосов
/ 10 ноября 2008

Если вы можете изменить события после сборки, вы можете сделать это с помощью переменной среды, скажем, SKIP_POST_BUILD_EVENTS. Затем вы можете установить эту переменную среды перед вызовом msbuild и проверить, существует ли переменная в событии после компоновки, прежде чем выполнять какой-либо код.

0 голосов
/ 05 ноября 2008

Вы пытались установить событие сборки на что-то кроме пустого? Если вы перезаписали его чем-то излишним, например, «dir» или чем-то еще, он все еще выполняет первоначальные шаги после сборки?

Это не самое элегантное решение, но оно может сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...