如果设置了属性,则禁用预定义的目标(如CoreBuild和CorePublish)

时间:2019-01-23 16:18:49

标签: msbuild msbuild-task

我有一个包含几个dirs.proj和cs / ccproj文件的项目结构。

当开发人员和某些内部版本运行时,我不想生成云服务.cspkg文件(不需要它们会花费很长时间)。我们的构建基础架构团队设置的是一个额外的属性“ BuildCloudPackages” =='true',我只能在需要时使用它来构建云包。

除非在dirs.proj中将所有ccproj的BuildCloudPackages设置为true,否则我想停止CorePublish和Build。

是否有一种方法可以对现有目标进行改造?或有条件地在dirs.proj中包含一个ProjectFile。还是有条件地在“选择/何时”内重新定义目标?还是通过禁用某些先决条件来停止构建/发布?还是根据条件从默认目标中删除Build和CorePublish?

1 个答案:

答案 0 :(得分:0)

我使用条件导入解决了该问题,其中一个禁用了我不想运行的任务,一个仅在需要时添加我需要的东西。

<Import Project="..\..\..\targets\DisableBuild.targets"
        Condition="'$(BuildCloudPackages)'!='true'" />
<Import Project="..\..\..\targets\CustomTasks.targets"
        Condition="'$(BuildCloudPackages)'=='true'" />

禁用文件如下所示:

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