我正在使用msbuild构建一个C ++项目,我想要压制'Post-Build Event'。我尝试了以下属性但没有成功:
/property:PostBuildEvent=
/property:VCPostBuildEventTool=
两者都没有任何区别,后期构建事件仍然执行。
有谁知道如何使用msbuild抑制这些(以及可能的其他)事件?
答案 0 :(得分:3)
我刚想出如何做到这一点。涉及两个步骤:
首先,如果您尚未使用批处理文件启动msbuild进程,请创建一个调用msbuild进程的批处理文件。然后在调用msbuild进程之前在批处理文件中添加一个变量。像这样:
set ISFULLBUILD=True
msbuild TFSBuild.proj >> BuildOutput.txt
然后,您需要修改您的帖子构建事件,以便仅在未设置变量或具有错误值时执行某些操作:
IF NOT '%ISFULLBUILD%'=='True' copy /y $(TargetFileName) "..\..\..\..\..\..\Binaries\$(ConfigurationName)\"
在这种情况下 - 只有在从Visual Studio构建时才会复制TargetFileName(Whatever.dll)。但是,当您使用新的批处理文件构建时 - 它将不会在IF语句之后执行命令。
答案 1 :(得分:0)
您是否尝试过将构建事件设置为空白以外的其他内容?如果你用一些多余的东西覆盖它,比如“dir”或其他东西,它是否仍然执行原始的构建后步骤?
这不是最优雅的解决方案,但可能有效。
答案 2 :(得分:0)
Ack,看起来msbuild实际上调用vcbuild并不灵活,所以我觉得我已经卡住了。
答案 3 :(得分:0)
如果您能够修改构建后事件,则可以使用环境变量(例如SKIP_POST_BUILD_EVENTS
)来执行此操作。然后,您可以在调用msbuild
之前设置该环境变量,并在执行任何代码之前检查变量是否存在于构建后事件中。