用vs2015写c++,编译报错项目已过期,怎么回事?
发布网友
发布时间:2022-04-24 12:31
我来回答
共2个回答
热心网友
时间:2023-10-12 22:32
这个bug的原因是Visual studio 2010认为项目中的被删除的文件是过期的,比如项目中的某个头文件,这个头文件已经被删除,Visual studio 2010找不到这个头文件,就认为它是过期的,所以每次调试VS都认为项目是过期的,需要先编译。
那为什么编译时没有发现有文件被编译呢,原因是这个头文件没有被任何CPP或C文件使用,所以编译时没有发现有文件需要重新编译。
Bug的原理明白了,解决方案就是在VS项目中删除那个头文件。
一种笨方法就是在VS里一个个头文件点击打开,找到不能打开的。
一种聪明的方法是写脚本解析工程文件,然后验证文件是否存在。
还有一种方法是通过DebugView来查看。
下面介绍一个这种方案。
1. 打开devenv.exe.config文件(此文件在%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\ 或者 %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\里)
2. 在</configuration>这行前面添加
<system.diagnostics>
<switches>
<add name=”CPS” value=”4″ />
</switches>
</system.diagnostics>
3. 重新启动Visual Studio
4. 打开DbgView(下载地址:http://technet.microsoft.com/en-us/sysinternals/bb896647), 勾选:菜单-》Capture-》Capture Win32 和 菜单-》Capture-》Capture Events
5. 点击F5开始调试,出现提示“此项目已经过期”时停止
6. 在DbgView按ctrl+F窗口查找“not up to date”,查找到如:
[120] Project ‘D:\cache\test1\test1.vcxproj’ not up to date because build input ‘D:\CACHE\TEST1\FUN1.H’ is missing.
7. 此时就找到了关键文件FUN1.H,只要在工程中移除这个文件再编译一次就可以了。
摘自:http://blog.csdn.net/jiaxiaokai/article/details/50923344 博主:举头红日白云低
摘自:http://blog.csdn.net/jiaxiaokai/article/details/50923344 博主:举头红日白云低
摘自:http://blog.csdn.net/jiaxiaokai/article/details/50923344 博主:举头红日白云低
热心网友
时间:2023-10-12 22:33
重新生成一下就可以了,
vs有的时候会自动生成,但有的时候又不行,应该是一个Bug。
所以每次修改之后运行的时候都手动生成一次就好了追问试过,没用。
追答先清理再重新生成也不行吗?