如何在 Visual Studio 中暂时禁用构建事件?

问题描述 投票:0回答:5

有没有办法暂时禁用构建前和构建后事件?

即在没有构建事件的情况下进行构建(这需要一些时间,但对于运行并不总是至关重要)

目前,我正在进行缩小和其他一些事情,但我并不总是需要这些。

visual-studio-2010 msbuild
5个回答
17
投票

禁用构建事件的最简单方法是传递空值:

msbuild your.sln /p:PreBuildEvent=;PostBuildEvent=

15
投票

最小化之类的东西只对发布版本重要。所以你可以像这样跳过它:

if "$(ConfigurationName)" == "Debug" goto skip
; stuff here...
:skip

您还可以使用一些其他宏,单击“编辑”按钮和“宏>>”按钮即可查看它们。环境变量也可以测试,使用%varname%。但设置起来要困难得多。


6
投票

我也玩了一点

msbuild foo.vcxproj /p:PreBuildEvent= /p:PostBuildEvent=
,但对我来说它不起作用,可能是因为我正在使用自定义道具文件。

我发现有效的是

/p:PostBuildEventUseInBuild=false


4
投票

检查您的构建后事件设置。在“构建事件”选项卡上,将“运行构建后事件”组合框值更改为“当构建更新项目输出时”。仅当更新输出程序集时才会执行构建后事件。

使用 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"

注意:CustomAfterMicrosoftCommonTargets 值应该是完整路径名。


0
投票

通过用户设置文件禁用构建事件

此处尚未提及的另一个选项涉及修改

.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>

(注意此处应使用

<PropertyGroup>
而不是
<ItemDefinitionGroup>
。)

这种方法的优点

  • 无需修改项目/解决方案文件
  • 不需要改变环境(参见
    Custom.After.Microsoft.Common.Targets
    方法)
  • 适用于命令行和 IDE 构建 - 不需要额外的参数,只需将
    .vcxproj.user
    文件放在项目目录中
  • 不干扰源代码控制(Git 等通常默认忽略
    .user
    文件)
© www.soinside.com 2019 - 2024. All rights reserved.