为什么MSBuild任务不会构建项目依赖关系?

问题描述:

我有许多C#项目的Visual Studio 2013解决方案。 有一个要求说项目B必须在项目(A)构建完成后构建。为什么MSBuild任务不会构建项目依赖关系?

项目A不依赖于项目B.项目B依赖于项目A,C和其他项目。所有依赖项都被定义为项目引用。

我加了以下目标到项目A:

<Target Name="MyAfterBuildStep" AfterTargets="AfterBuild"> 
    <MSBuild Projects="$(Bproject)" Properties="Configuration=$(ConfigurationName);Platform=$(PlatformName);SolutionDir=$(SolutionDir);BuildProjectReferences=true"/> 
</Target> 

它开始,但它并没有建立的$(Bproject)的依赖。

有人可以帮我理解为什么没有构建依赖关系,我应该怎么做才能构建它们?

+1

是否将相关性定义为项目引用或文件引用?是Bproject解决方案还是单个项目? – KMoraz

+0

作为项目参考。这里提到的Bproject和其他项目是同一解决方案中的项目。 – lenikur

+0

这个要求有些麻烦。如果项目B依赖于项目A,为什么项目A需要构建项目B而不是其他方式是默认行为?你的'强迫循环依赖,然后问如何避免它们。也许更好地解释你的目标,所以可能会建议其他解决方案.. – KMoraz

如果在同一个解决方案这两个项目,建立Bproject与$(SolutionPath)目标,例如:

<MSBuild Projects="$(SolutionPath)" Targets="Tests\Bproject" Properties="Configuration=$(ConfigurationName);Platform=$(PlatformName);SolutionDir=$(SolutionDir);BuildProjectReferences=true"/> 

目标名称应当反映该项目包括解决方案文件夹的名称。

+0

非常感谢!我现在无法检查,但看起来不错。我将这个答案标记为有用,但我没有可以接受的声望。 – lenikur