vs2010提示項(xiàng)目已經(jīng)過期怎么辦

vs2010提示項(xiàng)目已經(jīng)過期怎么辦

vs2010提示項(xiàng)目已經(jīng)過期怎么辦?

啟動(dòng)調(diào)試時(shí)總是提示此項(xiàng)目已經(jīng)過期的解決方案

推薦教程:vscode教程

vs2010提示項(xiàng)目已經(jīng)過期怎么辦

首先在visual studio里如果編譯沒過,那么這個(gè)提示就是正常的。

因?yàn)榇隧?xiàng)目已經(jīng)過期表示你改了某些文件或項(xiàng)目配置或者上次沒有編譯成功,需要重新編譯,否則調(diào)試會(huì)出錯(cuò)。

如果你上次編譯通過了,按F5調(diào)試還是出現(xiàn)此提示,那可能就有問題了。

如果每次都出現(xiàn)這樣的問題,那么這個(gè)解決方案很適合你。

當(dāng)然解決方案不是選擇“不要再顯示此對話框”,這個(gè)只是不顯示,但是每次調(diào)試還會(huì)先編譯一次再啟動(dòng)。

我們要的是不要再編譯了,直接啟動(dòng)調(diào)試吧。

首先此提示表示visual studio發(fā)現(xiàn)某些文件已經(jīng)過期了,但是在編譯的時(shí)候沒有發(fā)現(xiàn)有文件被編譯,連輸出文件都沒有重新生成。這不坑我嗎。

好吧,其實(shí)它就是坑我的,這是Visual studio的bug。在Visual studio 2005上一般沒有此問題,但是在Visual studio 2010上會(huì)出現(xiàn)此問題,其他版本暫時(shí)不清楚。

雖然是bug,但是也是可以解決的。

這個(gè)bug的原因是Visual studio 2010認(rèn)為項(xiàng)目中的被刪除的文件是過期的,比如項(xiàng)目中的某個(gè)頭文件,這個(gè)頭文件已經(jīng)被刪除,Visual studio 2010找不到這個(gè)頭文件,就認(rèn)為它是過期的,所以每次調(diào)試VS都認(rèn)為項(xiàng)目是過期的,需要先編譯。

那為什么編譯時(shí)沒有發(fā)現(xiàn)有文件被編譯呢,原因是這個(gè)頭文件沒有被任何CPP或C文件使用,所以編譯時(shí)沒有發(fā)現(xiàn)有文件需要重新編譯。

Bug的原理明白了,解決方案就是在VS項(xiàng)目中刪除那個(gè)頭文件。

一種笨方法就是在VS里一個(gè)個(gè)頭文件點(diǎn)擊打開,找到不能打開的。

一種聰明的方法是寫腳本解析工程文件,然后驗(yàn)證文件是否存在。

還有一種方法是通過DebugView來查看。

下面介紹一個(gè)這種方案。

1. 打開devenv.exe.config文件(此文件在%ProgramFiles%microsoft Visual Studio 10.0Common7ide 或者 %ProgramFiles(x86)%Microsoft Visual Studio 10.0Common7IDE里)

2. 在這行前面添加

<system.diagnostics><switches><add></add></switches></system.diagnostics>

3. 重新啟動(dòng)Visual Studio

4. 打開DbgView(下載地址:http://technet.microsoft.com/en-us/sysinternals/bb896647), 勾選:菜單-》Capture-》Capture Win32? 和 菜單-》Capture-》Capture Events

5. 點(diǎn)擊F5開始調(diào)試,出現(xiàn)提示“此項(xiàng)目已經(jīng)過期”時(shí)停止

6. 在DbgView按ctrl+F窗口查找“not up to date”,查找到如:

[120] Project ‘D:cachetest1test1.vcxproj’ not up to date because build input ‘D:CACHETEST1FUN1.H’ is missing.

7.? 此時(shí)就找到了關(guān)鍵文件FUN1.H,只要在工程中移除這個(gè)文件再編譯一次就可以了。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享