Visual Studio 2015 - 运行 Post 仅在从 GUI 构建时构建事件

Visual Studio 2015 - Running Post Build Events only when built from the GUI

我有一个构建 10 个项目的 Visual Studio 2015 解决方案。在每个项目中都有一个 pre 和 post 构建事件来调用 ant 来解析和发布代码。这些事件应该在每个项目构建之前和之后触发,因此将事件移动到解决方案是行不通的。

每个项目还应该能够使用 ant 从命令行构建。当它从命令行构建时,会触发事件,但如果不触发事件会更好。

有谁知道是否有办法 VS/MSBuild 确定它是从 GUI 内触发还是从命令行触发?

我不确定您是否可以在 PostBuildEvent 中执行此操作,但您可以使用 AfterBuild 目标并添加如下条件:

  <Target Name="AfterBuild">
    <Exec Command="SOME_COMMAND" Condition=" '$(BuildingInsideVisualStudio)' == 'true' " />
  </Target>

您需要手动编辑项目文件才能执行此操作,因为项目属性不允许您控制它。

如果您使用的是 Visual Studio 2017,则需要将条件语句作为属性添加到 PostBuildEvent。

<PostBuildEvent Condition="'$(BuildingInsideVisualStudio)' == 'true'">

这将在重建依赖项时阻止 post 生成事件 运行。