2011-10-06 75 views
3

我的僱主有一個包含14個項目的解決方案,巧合的是,編譯整個應用程序需要14秒。這使得很難進行更改和重新編譯 - 浪費大量時間。什麼是.NET應用程序中的東西我可以尋找使編譯更快?或者我可以問,哪種工具最適合排查這類事情。 (要了解與msbuild.exe發生).NET解決方案的哪些部分會導致編譯速度變慢?

解決方案詳情:

  • 強類型數據集瓦特/報告服務
  • WCF服務
  • 的C#和VB.NET
  • 組合項目
  • 一個web應用程序項目
  • 資源(resx文件)遍佈全國
  • 企業庫(如果你需要我,我可以得到具體的)
  • 微軟的嚮導導航UIProcess應用程序塊
  • 微軟AJAX Control Toolkit的
  • PdfSharp

請詢問您是否需要更多的細節。

+7

14秒??我的天哪,你會在等待的時候做什麼:p – Ray

+0

禁用防病毒? – Ray

+0

嗯,他是MacGyver。他應該能夠在14毫秒內編譯整個解決方案。 :-P – Konamiman

回答

2

要加快構建,請卸載您未在其中工作的項目。在解決方案資源管理器中,右鍵單擊一個項目並單擊「卸載項目」。您可以選擇多個項目並一次全部卸載它們。當你構建時,卸載的項目將不會被構建。

如果一個解決方案包含很多項目,那麼在任何給定的時間,你幾乎肯定只能在其中一些項目上工作。如果你一次都在做這些工作,那麼你需要看看你的工作方式。

這與從解決方案中刪除項目不同。當您需要更改/重建一個卸載的項目時,可以輕鬆地重新加載它。

+0

這個方便的擴展 - 解決方案負載管理器 - 幫助您只需加載您需要的項目:http://visualstudiogallery.msdn.microsoft.com/66350dbe-ed01-4120-bea2-5564eff7b0b2 – Ray

+0

卸載項目將其從14秒減少到9秒 – MacGyver

2

引用其他VS項目時,確保將「複製本地」設置爲false,除非您因特定原因需要它。

您可以創建特定於您正在處理的項目的另一個解決方案。

雖然不是很長時間!

+0

哪裏找到「copy local」? – MacGyver

+0

它位於每個項目或程序集引用的「屬性」面板中。 – SHug

3

您是否需要在每次進行更改時重建整個解決方案?重建當前的項目就足夠了嗎?這可能會加速一些事情。

我工作的解決方案有近300個獨立的項目,需要大約2分鐘才能完成構建,但是當我在工作時,我只構建我正在進行的項目,節省了大量時間。

2
  • 如果您使用本地文件的源代碼控制,例如SVN值得在代碼目錄中禁用防病毒程序。
  • 設置複製到輸出目錄不要複製如果,如果你不能做到這一點使用副本新
  • 可能的話移除所有的前/後生成事件
  • 如果你有網站項目開關的WebApplication
  • 對於卸載和加載項目,您可以使用Solution Load Manager
+0

我們的項目沒有一個本地數據文件(從我從關於該設置的文章中得到的內容)..對於該複製到輸出目錄設置..至少我找不到它。你能解釋如何得到這個選項嗎?我會執行哪些步驟? – MacGyver

2

編譯有時是磁盤綁定的,特別是對於.Net應用程序。它會在固態硬盤上運行得更快。如果你想測試這個理論,把你的代碼放到RAM disk並編譯它。

+0

使用RAM磁盤編譯.NET應用程序需要什麼步驟? – MacGyver

+0

我正在標記另一個人的答案,直到我可以使這個工作並將編譯時間縮短到9秒以下。他從14秒減少到9秒,這比較好。 – MacGyver

+0

步驟#1,安裝合適的RAM磁盤。鏈接的是免費的,效果不錯。將您的源代碼移動到RAM磁盤。 (它看起來就像計算機上的另一個普通驅動器)一定要使用源代碼管理和頻繁檢入,RAM是易失性的。編譯的臨時文件被寫入obj文件夾,最後的對象被寫入bin文件夾。因此,所有重要的讀寫操作都在應用程序的工作文件夾中(即與sln文件相同的文件夾) – MatthewMartin

相關問題