【发布时间】:2012-02-06 16:00:01
【问题描述】:
有没有办法暂时禁用构建前和构建后事件?
即在没有构建事件的情况下构建(这需要一些时间,但运行起来并不总是至关重要)
目前,我正在进行缩小和其他一些事情,但我并不总是需要这些。
【问题讨论】:
标签: visual-studio-2010 msbuild
有没有办法暂时禁用构建前和构建后事件?
即在没有构建事件的情况下构建(这需要一些时间,但运行起来并不总是至关重要)
目前,我正在进行缩小和其他一些事情,但我并不总是需要这些。
【问题讨论】:
标签: visual-studio-2010 msbuild
禁用构建事件的最简单方法是传递空值:
msbuild your.sln /p:PreBuildEvent=;PostBuildEvent=
【讨论】:
像最小化这样的东西只对发布版本很重要。所以你可以像这样跳过它:
if "$(ConfigurationName)" == "Debug" goto skip
; stuff here...
:skip
您还可以使用其他一些宏,单击“编辑”按钮和“宏>>”按钮查看它们。环境变量也可以测试,使用 %varname%。但更难设置。
【讨论】:
我也玩了一点msbuild foo.vcxproj /p:PreBuildEvent= /p:PostBuildEvent=,但对我来说没用,可能是因为我使用的是自定义道具文件。
我发现可以工作的是/p:PostBuildEventUseInBuild=false
【讨论】:
/p:PostBuildEventUseInBuild=false 也为我工作。谢谢!
/p:PostBuildEvent= 不起作用,但 /p:PostBuildEventUseInBuild=false 起作用。
检查您的构建后事件设置。在“构建事件”选项卡上,将“运行构建后事件”组合框值更改为“构建更新项目输出时”。只有在更新输出程序集时才会执行构建后事件。
或
使用 MSBuild 命令构建您的解决方案(这对于多解决方案项目很有用)。 在您的 PC 上的某处创建“DisableBuildEvents.msbuild”文件。 DisableBuildEvents.msbuild 内容:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PostBuildEvent"/>
<Target Name="PreBuildEvent" />
</Project>
使用在命令行中设置的 CustomAfterMicrosoftCommonTargets 属性执行 MsBuild:
MSBuild.exe YourSolution.sln /t:Build p:CustomAfterMicrosoftCommonTargets="c:\DisableBuildEvents.msbuild"
注意:CustomAfterMicrosoftCommonTargets 值应该是完整的路径名。
【讨论】: