1

我有一个项目,它有一些后期构建事件,可以为其他项目做一些复制。不幸的是,我无法改变这一点,并被要求编写一个构建脚本以在 CI 服务器上使用。

问题是后期构建步骤从调试/发布 bin 文件夹中运行,我通过构建脚本编译到不同的文件夹。因此,一种解决方案是让项目按原样构建,然后手动将所有文件从 bin 文件夹复制到我正在使用的输出文件夹中。然而,这感觉有点像 hack,所以我想知道 MSBuild 任务是否有办法告诉它正在构建的解决方案忽略 PostBuild 事件,我相信你可以设置一个属性 PostBuildEvent='' 但它似乎没有阻止它们发生...

这是构建脚本目标的示例:

<Target Name="Compile" DependsOnTargets="Clean;">
    <MSBuild Projects="$(SourceDirectory)\SomeSolution.sln" 
            Properties="Configuration=Release; OutputPath=$(CompilationDirectory); PostBuildEvent=''" />
</Target>

以前有人必须做类似的事情吗?

4

2 回答 2

1

要禁用所有 PostBuildEvents,请将 CustomAfterMicrosoftCommonTargets 设置为 C:\PostBuild.config(或您命名文件的任何名称)并将 PostBuild.config 设置为:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="PostBuildEvent"/>
</Project>

将 /p:CustomAfterMicrosoftCommonTargets="C:\PostBuild.config" 添加到您的 msbuild 命令行

或更新您的 MsBuild 任务属性:

<MsBuild Projects="$(ProjectTobuild)" Properties="Configuration=$(Configuration);Platform=$(Platform);CustomAfterMicrosoftCommonTargets='C:\PostBuild.config'" Targets="Build"/>
于 2011-11-25T12:36:55.343 回答
0

要在 MSBuild 的项目级别禁用 PostBuildEvents,只需将这些代码放入 .csproj 中:

 <Target Name="BeforeBuild">
  <PropertyGroup>
    <PostBuildEvent></PostBuildEvent Condition="'$(BuildingInsideVisualStudio)' == 'false' Or '$(BuildingInsideVisualStudio)' != 'true'">
  </PropertyGroup>
 </Target>
于 2017-08-01T09:56:59.093 回答