2010-03-03 57 views
1

我有許多dll和兩個exe的解決方案。 exes依賴於dll,當我對任何一個dll進行內部更改時,我的一個exes會重新生成,並且每次都會生成其所有代碼。我的假設是,如果沒有它所依賴的源文件發生了變化,它只需要重新鏈接即可。有沒有我缺少的設置,導致它每次都進行完全重建。Visual Studio強制項目每次都要重建

+0

您是否驗證過您的dll和您的exe文件之間沒有循環引用/依賴關係? – 2010-03-03 21:44:36

回答

1

我很確定Studio(更具體地說MSBuild)不會跟蹤源文件級別的依賴關係,所以當您將源代碼更改爲dll時,所有visual studio都會看到它依賴的dll已經發生更改,所以它重建了exe。

+0

MSbuild確實會對時間戳進行深入檢查。它知道你的編譯使用的所有頭文件可以回到windows.h或其他任何地方。如果你撥打詳細的詳細信息,你會看到什麼文件觸發了構建,如果它是一個頭部,它將顯示在那裏。 – dan 2010-07-06 03:16:06

0

這通常發生在exe文件依賴於dll項目中的.h文件(包括.h)的情況下。如果你改變.h它會使exe重建。如果你改變.cpp,exe不應該重建。至少這是它對我的作用。通常DevStuido非常聰明,能夠找出需要重建的內容,並只構建需要完成的工作。

+0

我改變cpp – rerun 2010-03-03 22:30:40

+0

你能找出exe文件是否依賴於那個.cpp文件。也就是說,通過一系列包含(不良形式,但可能),通過一系列你沒有想到的靜態庫? 如果你沒有改變函數簽名,那麼exe就不需要重建。 是重建整個exe,還是隻是重新鏈接? – miked 2010-03-03 23:54:24

+0

它重建整個exe這是一個4300文件項目,所以我想我將不得不看一個預處理器出來,看看是什麼造成它。 ARG – rerun 2010-03-04 01:32:18

0

我有同樣的問題,並且因不斷重建而感到沮喪。對我來說這是一個相當簡單的解決方案。我剛剛重新安裝了電腦,發現我錯誤地設置了日期。所以今天晚上我改變了一天的日期...

這導致我在'未來'有一天在我的項目中有幾個文件最後更改時間戳的文件,從而不斷重建。

相關問題