2016-04-25 81 views
0

我有許多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

回答

0

如果在同一個解決方案這兩個項目,建立Bproject與$(SolutionPath)目標,例如:

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

目標名稱應當反映該項目包括解決方案文件夾的名稱。

+0

非常感謝!我現在無法檢查,但看起來不錯。我將這個答案標記爲有用,但我沒有可以接受的聲望。 – lenikur