为什么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)的依赖。
有人可以帮我理解为什么没有构建依赖关系,我应该怎么做才能构建它们?
答
如果在同一个解决方案这两个项目,建立Bproject与$(SolutionPath)
目标,例如:
<MSBuild Projects="$(SolutionPath)" Targets="Tests\Bproject" Properties="Configuration=$(ConfigurationName);Platform=$(PlatformName);SolutionDir=$(SolutionDir);BuildProjectReferences=true"/>
目标名称应当反映该项目包括解决方案文件夹的名称。
+0
非常感谢!我现在无法检查,但看起来不错。我将这个答案标记为有用,但我没有可以接受的声望。 – lenikur
是否将相关性定义为项目引用或文件引用?是Bproject解决方案还是单个项目? – KMoraz
作为项目参考。这里提到的Bproject和其他项目是同一解决方案中的项目。 – lenikur
这个要求有些麻烦。如果项目B依赖于项目A,为什么项目A需要构建项目B而不是其他方式是默认行为?你的'强迫循环依赖,然后问如何避免它们。也许更好地解释你的目标,所以可能会建议其他解决方案.. – KMoraz