所有项目引用上的msbuild调用目标

时间:2018-09-05 03:35:26

标签: msbuild

我需要为以下分层项目结构在每个“ ProjectReferences”上调用目标。

项目A->项目B->项目C

每个项目都有一个名为“ customTarget”的目标。如何定义配置,以便当我在项目“ A”上调用“ customTarget”时,在项目“ B”上触发“ customTarget”,而在“ C”上间接触发目标? 预期目标顺序:C-> B-> A。

问题:我该如何配置以上内容,并使其对所有项目参考通用。

[更新]
我能够使用

创建目标调用链
<MSBUILD Projects="@(ProjectReference)" Targets="customTarget" />

但这需要我在项目链中的每个项目中添加目标规范,即使它没有做任何事情。
可以解决上述问题吗?

1 个答案:

答案 0 :(得分:0)

您可以将扩展目标放置在Directory.Build.props文件中:

<Project>
  <Target Name="customTarget" DependsOnTargets="PrepareProjectReferences">
    <MSBUILD Projects="@(ProjectReferenceWithConfiguration)" 
             Targets="customTarget"
             SkipNonexistentTargets="true" />
  </Target>
</Project>

在VS 2017 / MSBuild 15和更高版本中,它将自动导入到文件夹层次结构下面的所有项目文件中。