2009-05-26 44 views
8

我有一個包含70個項目的visual studio(2005)解決方案文件。
每次我按F5運行它時,它都會告訴我4個項目已過時,並詢問我是否要重新構建它們。即使我剛剛完成了構建,它也會這樣做。
我明白(原則上)其他項目中的其中一個必須更新這些項目所依賴的項目,但我該如何找出什麼?如何在每次運行時修復Visual Studio'項目過期的消息'

是否有任何工具可以幫助,或者我應該遵循什麼程序來弄清楚是什麼導致VS將這些項目標記爲重建?

更新:
對於那些有興趣的人看起來像我的電腦是/是問題(我的高清最近一直在採取行動)。當我試圖追查問題時,連續重建開始產生編譯錯誤。我做了一個清理和構建,並且得到了很多(顯然是虛假的)錯誤。稍後重啓,然後重建,所有錯誤和依賴關係問題都消失了。
請問現在,當我去和備份我的所有重要文件...

+1

的一個好方法來調試這個問題在這裏詳細描述: http://stackoverflow.com/questions/2762930/vs2010-always-thinks-project-is-out-of-date-but-nothing-已經改變 – Ben 2012-06-26 21:08:25

回答

7

我會連續運行正常體形,兩次。第二次,我將MSBUILD的詳細程度設置爲「Normal」或更高(在Tools-> Options,「Projects and Solutions」,「Build and Run」中)。第二次

事實上,現在我想到了,如果這真的是一個循環,那麼第二次構建的某些部分必定是什麼導致它第三次構建,等等。在其中一個接觸程序集或其他資源的項目中進行後構建步驟,在該解決方案中有70個項目,這樣的事情很容易導致無意中造成,並且難以捕捉。充分了解MSBUILD能夠檢測到其中一個步驟是由於某些事情發生變化而決定需要構建的時候,然後足夠好地瞭解您的解決方案,以便知道沒有什麼應該改變;然後看到事端g 已將更改爲不應更改。

完成此練習後,您可能已獲得一些洞察,可幫助您將解決方案分解爲更小的解決方案。

1

我在將.netmodule鏈接到符合自定義構建步驟的項目中時遇到了同樣的問題。事實證明,我還在鏈接一個C++庫,並且.netmodule文件在鏈接器輸入的同一行中列出。

舉例:.LIB .netmodule的

歐洲工商管理學院: 的.lib \ n .netmodule

1

比在Visual Studio 2013約翰的日誌詳細更快的方法,是打開Solution Explorer中的項目樹;沒有找到的文件將不會在文件名前面有一個小三角形(通常您可以在該文件中看到一個符號列表)。

刪除這些文件,對於我來說,AlwaysCreate消息已消失(當詳細級別至少設置爲「正常」時,您只能看到'AlwaysCreate')。

1

我有這個問題,事實證明我有一個頭文件添加到我的項目,但我已經從磁盤刪除。從修復的行爲中刪除不存在的頭文件。

1

在我刪除了一些不再用於我的項目的源文件後,我在VS2010中遇到了這個確切的問題。只需從「Build」菜單中選擇「Clean Solution」,然後重新構建解決方案即可解決問題。

相關問題