也許這只是一個瘋狂的人的夢想,但..優化編譯時在持續集成
在我的公司,我們有一個大的C#.NET項目,約25個解決方案(很老)和3.5〜MIO。同上。我面臨的問題是:構建時間太慢,現在需要7分鐘SSD(開發機器),15分鐘+虛擬機與普通硬盤驅動器(將是我希望部署的TeamCity構建系統)。 我知道,構建系統應該是最快的,但這是我在短期內無法改變的。
我想通過編譯最後一次提交所涉及的項目,從所有其他程序集中取出所有其他程序集,以縮短開發人員(最好在Teamcity機器上)的commit-build-unittest反饋循環。一個本地nuget服務器(團隊城市服務器本身版本7.0)。
現在,這將極大地砍下反饋迴路(15分鐘,不到一分鐘,給真正單元測試)爲小的提交。我知道這種部分編譯的問題是跳過編譯錯誤(不匹配的接口可能被忽視)的可能性,但是通過運行第二個(Teamcity?)構建服務器實例來運行整個enchilada可以緩解這個問題,在平行下。但立即獲得第一反饋是非常重要的我。
現在我的問題:是否有任何構建系統/持續集成系統可以處理這個任務?或者我是否必須編寫自己的提交感知後臺服務?這會有點令人討厭,因爲我們使用FinalBuilder腳本,而且這個格式似乎不能被任何API讀取(但沒有深入到那個深處)。
P.S .:另外,我想只對最後一次提交發生變化的項目運行單元測試,或者至少優先考慮它們。但這是事後的想法。
的[很慢編譯在Visual Studio的時間]可能重複(HTTP ://stackoverflow.com/questions/55517/very-slow-compile-times-on-visual-studio) – Oded 2011-12-27 15:31:57
是的,看到了,但.. 1)這是很老了,2)許多答案都沒有用C#可用, 3)少數的人,這將有助於(如一個與自定義VS加載項),不支持任何鏈接和被埋沒所以內心深處我無法及時 – hko 2011-12-27 19:50:23
希望對一些有價值的反饋@hko我知道這似乎是一個難以想象的數字很多要浪費的點,但我會考慮在其他問題上給予獎勵和/或按照答案中的每一個環節在另一邊。 – 2012-01-01 22:32:05