有没有一种方法可以暂时禁用预先构建和后期构建事件?
即构建时不执行构建事件(它们需要一些时间,但并不总是必须运行)
目前,我正在进行缩小文件和其他一些操作,但并不总是需要这些操作。
有没有一种方法可以暂时禁用预先构建和后期构建事件?
即构建时不执行构建事件(它们需要一些时间,但并不总是必须运行)
目前,我正在进行缩小文件和其他一些操作,但并不总是需要这些操作。
禁用构建事件最简单的方法是传递空值:
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
对我也起作用了。谢谢! - sthlm58/p:PostBuildEvent=
不起作用,但是 /p:PostBuildEventUseInBuild=false
可以。 - Zitrax请检查您的后期构建事件设置。在“生成事件”选项卡上,将“运行后期构建事件”组合框值更改为“当构建更新项目输出”时。只有在更新输出程序集时才会执行后期构建事件。
或者
使用MSBuild命令来构建您的解决方案(这对于多解决方案项目非常有用)。 在您的电脑上创建一个名为“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"
这里还有另一个选择,尚未提及的是修改.vcxproj.user
文件。要禁用构建事件,请将此文件放在您的.vcxproj
旁边:
<!-- ProjectName.vcxproj.user -->
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemDefinitionGroup>
<PreBuildEvent>
<Command>echo Skipping pre-build event!</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>echo Skipping post-build event!</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
</Project>
<ItemDefinitionGroup>
标签是很重要的,以使其正常工作。<PropertyGroup>
<PreBuildEventUseInBuild>false</PreBuildEventUseInBuild>
<PreLinkEventUseInBuild>false</PreLinkEventUseInBuild>
<PostBuildEventUseInBuild>false</PostBuildEventUseInBuild>
</PropertyGroup>