2015-03-19 78 views
0

我試圖將.NET CI從Nant移到MSBuild以繞過Nant解決方案任務限制,但我無法重現Nant程序集引用行爲。 Nant解決方案任務在VS項目中查找二進制引用,並在項目引用中將其轉換(如果項目包含在解決方案中)。 在我的組織中,開發人員使用基本庫的二進制引用,但在夜間構建期間,我想從源代碼構建所有內容。 我可以創建一個解決方案文件,通過它改變輸出目錄的所有項目,似乎我必須手動指定構建順序,一項大工程。 有辦法做這樣的事情,或者我做錯了什麼? 我想使用這個腳本的TeamCity或CruiseControl.Net使用MSBuild複製Nant解決方案任務依賴關係解析

<solution configuration="release" outputdir="C:\output\bin"> 
    <projects> 
    <include name="ProjectA.csproj" /> 
    <include name="ProjectB.csproj" /> 
    <include name="ProjectC.csproj" /> 
    </projects> 
</solution> 

如果項目A參考projectB.dll和項目B的參考projectC.dll南特以下順序進行編譯:項目C-項目B,項目A,如使用參考已編譯項目的輸出。

+0

請向我們展示代碼 – 2015-03-19 11:30:44

+0

添加示例腳本。 – 2015-03-19 13:55:57

回答

0

我會堅持使用Nant,並且在nant中調用msbuild來編譯您的解決方案。 只需使用exec任務來調用msbuild,並且您可以完全控制所有參數。從nant更改爲msbuild需要思維轉換:-)

通常每個項目都有一個'lib'文件夾,並且該文件夾是已知的。 從所有項目中獲取源代碼,編譯C並將其複製到B的lib中,等等。 這確實是一個手動任務,但依賴關係不會有太大改變。

對於更自動化的方式,也許下面的鏈接可以幫助你 http://blog.dantup.com/2012/05/free-dependency-graph-generation-using-powershell-and-yuml/

有,如果你谷歌了一下週圍,你可以使用其他免費的圖書館,我不知道哪一個會最適合你。

+0

謝謝,「手動」解決方案應該是可能的,但除目標目錄外還有編譯順序,如果您有很多項目,這將是一項非常繁重的工作。我會嘗試調查第二個想法:-) – 2015-03-23 09:29:49

相關問題