2008-12-20 87 views
1

要編譯我當前的項目,一個具有〜90,000 loc +〜100 DLL的exe文件需要大約半小時或更長的時間,具體取決於工作站的速度。編譯大規模的VB.NET項目

構建過程是從Powershell腳本運行devenv的過程之一。這很好,沒有問題。

問題是它很慢。我想加快這個構建過程。

MSBuild(使用VS-2005)是一種選擇,但有一個錯誤指定命令行上的vb編譯器/鏈接器的圖標,以便它不會成功鏈接。

還有什麼其他選項可以「製作」VB.NET程序?

(更快的工作站是不是一種選擇。)

回答

1

NAnt,並Cruisecontrol.NET爲持續構建。

你提到,獲得更快的PC不是一種選擇,但你有多少內存? 2GB應該是開發者機器的最小值。此外,使用一個快速的10K RPM硬盤使big difference

您是否嘗試過在構建期間禁用任何病毒掃描程序?

3

您是否每次都必須編譯整個解決方案?有了這麼多的組件,他們似乎不大可能需要建造,除非他們真的改變了。如果您的解決方案由多個項目組成,您可以考慮在您的構建環境中創建多個解決方案。一個主解決方案可以包含所有的項目,另一個包括那些經常變化的項目。然後,您可以配置您的構建過程以專注於已更改的項目。根據您使用的源代碼管理系統,您可以查詢系統以確定自上次構建以來哪些項目發生了變化,並且僅構建這些項目。

1

如果可以,請升級到MSBuild的3.5版本。它可以構建解決方案文件,並支持multiprocessor support(或者如果需要自己託管,則可以使用here),從而使其能夠並行構建項目。

需要注意的是,您需要使用項目引用,以便知道要構建的內容。

此外,現在需要多長時間?你看過CPU /內存使用情況(使用諸如PerfMon之類的東西)來查看它是否是瓶頸?

0

沒有太多的工作可以讓構建過程更快地向您的機器添加更多的核心,CPU功率和內存,但這不是您的選擇。

大多數大型項目並不包含在單個EXE中。更常見的情況是,邏輯單元被移入單獨的程序集,它們可以是DLL或EXE。最終的結果是一大堆小組件,而不是一個巨大的組件。

舉一個例子,我工作的一個項目是巨大的,包括700多個表格和1000個類別的10個。功能相關的表單,如與打印,報告生成,用戶詢問等相關的表單在自己的EXE中是獨立的。如果我正在編寫報告,我會從構建過程中排除與報告無關的所有項目,這有助於將編譯時間從半小時縮短到幾秒。

這種編程風格可能會很棘手,但是當它正確完成時,它的工作原理並且完美無瑕。

0

如果你有大量的項目,那麼你應該嘗試減少它們。你可以隨時在dll中分割它們。項目越少,建設速度越快。特別是如果它必須以一定的順序構建它們。

在較小的解決方案中打破它們也是一種選擇。