因此,正如標題所示,我現在擁有一個VS2010解決方案,其中包含約50個項目。如果我對沒有任何引用的「頂級」項目進行更改,那麼VS仍然會重建所有50個項目。我正在運行Visual Studio 2010 Ultimate,沒有任何附加組件。我正在使用ILMerge將所有項目合併到一個文件中。Visual Studio重建未修改的項目
我已通過檢查較低級別dll的時間戳驗證了這一點,並確定即使其代碼未被觸摸,它們確實也會重建。
我讀過所有的答覆和意見:
Visual Studio 2008 keeps rebuilding
Visual studio keeps building everything
Strange VS2010 build glitch occurs in my solution
Reasons for C# projects to rebuild in Visual Studio
但大多隻是提供有關卸載工程,加快建議建設時間,但沒有具體的t o修復。我試圖弄清楚爲什麼VS認爲這些依賴項目需要在沒有修復時重建。
我已經打開'工具>選項>項目和解決方案>構建和運行>只在運行時構建啓動項目和依賴關係'但沒有任何效果。另外,如果我只重建只有8個(in)直接依賴關係的「中級」項目,那麼即使ILMerge沒有被調用,也沒有任何依賴項目被修改,它仍然會構建全部8個項目。
謝謝大家對於您可能提供的任何見解。
新增
爲了測試一些建議,我創建了一個從無到有的新的WinForms項目。然後我在該解決方案中創建了兩個新項目。我將兩個'最低級別'項目中的所有代碼和資源(不是項目文件)複製到兩個全新項目中(我通過從資源管理器中將文件和文件夾放到Visual Studio中的項目上來完成這項工作)。
最低的項目,我們稱之爲B,沒有參考任何其他項目。下一個項目A,僅參考B。所以一旦我將所需的.NET和外部程序集引用添加到項目中,解決方案就會生成。
然後,我有了我的新WinForm項目參考A並做了完整的構建。所以裁判鏈是:
的WinForm - >甲 - >乙
我然後改性的WinForm僅,做了標準構建(F6)。和以前一樣,Visual Studio重建了所有三個項目。
源文件在項目中的某些系統eleminiation後乙我發現,如果我刪除我的Resources.Designer.cs
和Resources.resx
(並評論指出,利用這些資源的.Properties.Resources
對象的代碼),然後的WinForm的修改將不再重建整個解決方案,只會重建WinForm。
添加Resources.resx
和Resources.Designer.cs
返回項目乙(但留下注釋掉,這樣沒有被利用資源的引用代碼)會再次引入全力打造的行爲。
要查看我的資源文件是否已損壞,我再次刪除它們,然後創建一個新文件(通過「項目屬性」 - >「資源」)並重新添加與之前相同的資源,這是一個Excel文件。有了這個設置,完全重建仍然會發生。
然後,我刪除了單個資源,但將資源文件留在項目B中。即使沒有添加資源,但資源文件仍在項目中,完全(不需要)重建也會發生。
看起來只是將資源文件添加到(.NET 3.5)項目中會導致Visual Studio 2010始終重建該項目。這是一個錯誤或預期/預期的行爲?
再次感謝所有!
能你試着用msbuild直接構建它,看看它是否仍然發生 – 2013-02-17 00:31:25
我的理解是VS調用msbuild(並且一個項目基本上是一個msbuild腳本http://stackoverflow.com/questions/1497344/integrating-msbuild-into- visual -studio),所以我不確定這會改變什麼G。我懷疑我只是最終重新創建相同的構建腳本,然後從命令行運行它。有沒有直接運行msbuild的方法會有所不同?或者,也許某種方式來找出爲什麼msbuild認爲項目需要重建? – 2013-02-17 00:45:43
你正在建設還是重建? – 2013-02-17 00:51:31