2013-02-22 104 views
0

我們想要設置構建過程以防止在分支上發生重大更改。我們有一個共同的圖書館/項目被多個項目引用。因此,當對這個公共庫進行更改時,使用它的所有其他項目也可能會構建並檢查是否存在重大更改。到目前爲止,使用MSBuild,我們已經能夠做到相反。從一個項目中,我們可以收集所有的依賴關係。但是,我怎樣才能獲得所有參考/使用msbuild使用公共庫的項目?MSBuild獲取所有項目引用/使用項目

回答

0

最好的選擇是將這個通用庫放到分支下的通用文件夾中,只要它在其他項目中生成並引用它即可。

否則,我不確定msbuild是否有支持來識別引用二進制文件的位置。如果可能的話,這也將是一個耗時的過程,具體取決於你的分支的大小,它會給你的通用庫構建增加不必要的開銷,並且在將來開始使用這個通用庫的時候會嚴重影響分支構建過程的可維護性其他地方。

0

這將是一些工作,如果你想做一些「推」的通知。

CommonLibrary的便宜技巧是(作爲構建過程的最後一步),將在每個相關項目中執行源代碼更新。像一個虛擬文件。

.\MySolution1.sln 
.\MyBuildTriggerFile1.txt 

然後

.\MySolution2.sln 
.\MyBuildTriggerFile2.txt 

(等,等)。

並讓CommonLibrary構建過程繼續,並對依賴項目執行某種快速更新和簽入。

這裏的好處是,這相對容易實現。 這裏不好的是,你必須手動保持CommonBuild項目中的列表更新。 另一個好處就是......你實際上並沒有在做這些構建,你只是發送一條小小的消息說「發生了什麼事」。所以CommonBuild庫不會陷入困境。

然後,您的相關項目可以設置爲「建立在變化上」,然後您會很快知道。

......

如果你想爲「全自動」和「所有動態」,你會不得不做一些工作,一個自定義的MSBuild任務。

您必須開始拉動csproj文件,解析它們,然後將它們鏈接回CommonLibrary。

XPath and *.csproj

YOUCH。這是很多工作。

.......

我會採取中間立場的方法。

使用「觸發器文件」系統......(建議上面).......並且讓代碼可以每晚一次或「每次檢入」......

無論如何。有一個想法。但我不知道任何東西。

............