【问题标题】:How to temporarily disable build events in Visual Studio?如何在 Visual Studio 中临时禁用构建事件?
【发布时间】:2012-02-06 16:00:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: visual-studio-2010 msbuild


    【解决方案1】:

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

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

    【讨论】:

    • 甜蜜。由于新添加的构建事件,我的 TeamCity 构建失败。将此添加到“命令行参数”字段修复它很好。
    【解决方案2】:

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

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

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

    【讨论】:

    • 如果您要使用 NOT EQUAL 进行搜索,只需将 '==' 替换为 'NEQ'
    【解决方案3】:

    我也玩了一点msbuild foo.vcxproj /p:PreBuildEvent= /p:PostBuildEvent=,但对我来说没用,可能是因为我使用的是自定义道具文件。

    我发现可以工作的是/p:PostBuildEventUseInBuild=false

    【讨论】:

    • 我遇到了完全相同的情况,/p:PostBuildEventUseInBuild=false 也为我工作。谢谢!
    • 这里也一样,/p:PostBuildEvent= 不起作用,但 /p:PostBuildEventUseInBuild=false 起作用。
    【解决方案4】:

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

    使用 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 值应该是完整的路径名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 2017-01-17
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多