Visual studio 2013 为什么MSBuild任务不生成项目依赖项?

Visual studio 2013 为什么MSBuild任务不生成项目依赖项?,visual-studio-2013,msbuild,msbuild-task,Visual Studio 2013,Msbuild,Msbuild Task,我有一个Visual Studio 2013解决方案,它有很多C#项目。 有一个要求是项目B必须在项目(a)构建完成后构建 项目A不依赖于项目B。项目B依赖于项目A、C和其他。所有依赖项都定义为项目引用 我在项目a中添加了以下目标: <Target Name="MyAfterBuildStep" AfterTargets="AfterBuild"> <MSBuild Projects="$(Bproject)" Properties="Configuration=$(Con

我有一个Visual Studio 2013解决方案,它有很多C#项目。 有一个要求是项目B必须在项目(a)构建完成后构建

项目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)的依赖项


有人能帮助我理解为什么不构建依赖项,以及我应该如何构建依赖项吗?

如果两个项目位于同一个解决方案上,请使用
$(SolutionPath)
将Bproject构建为目标,例如:

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


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

依赖项定义为项目引用还是文件引用?B项目是解决方案还是单个项目?作为项目参考。Bproject和这里提到的其他项目是同一个解决方案中的项目。需求有些繁琐。如果项目B依赖于项目A,为什么项目A需要构建项目B,而不是构建默认行为的另一种方式?你需要强制循环依赖,然后询问如何避免它们。也许最好解释一下你的目标,这样就可以提出其他的解决方案。你是对的。目标很简单。该解决方案有“生产”项目和单元测试项目。让我们称项目A为生产代码,项目B为项目A中类的单元测试。项目A没有对B的引用,但B引用了A。每次项目A构建完成(顺便说一句,它防止循环依赖)项目B也必须构建(之后UT将运行)。仅此而已。非常感谢!我现在不能检查,但看起来不错。我认为这个答案很有用,但我的名声不好。