VS2010每次调试都出现“此项目已经过期”提示
来源:互联网 发布:端口嗅探 编辑:程序博客网 时间:2024/05/16 15:54
问题描述
最近因为项目需要,开发平台从VS2005切换成了VS2010,把一些老项目也转换到VS2010平台,因为是从低到高升级,微软还是做了很多兼容,基本上可以无缝切换,编译调试也基本正常,但是发现有些项目(尤其是比较大的项目),刚刚编译完毕,马上F5启动调试,发现VS2010会弹出下面的框,开始以为是自己手误,不小心改动了某个源文件导致,后来发现每次调试都提示,把"不再显示此对话框"勾上是不是就可以了呢?框是不弹了,但是实际上还是每次重新编译。
问题追踪
1、首先,我开始以为是我安装的VS2010有什么问题,但是随便新建的VS2010的工程正常得狠,从来没有出现过这个问题。
2、另外,从这个提示这个来看,它是说对比上一次编译来说,本地的源文件过期了(就是有改动过了),如果真的改动过了,那么这个提示是正确的,确实需要重新编译,但是,经过多次观察"输出窗口"的输出,每次重新编译,并没有发现有什么文件被重新编译,VS2010这是在忽悠人?!
3、怒了,从一个有问题的小工程入手,一个个的排查里面的源文件,发现里面一个.h头文件实际上本地没有了,但是还留在工程的编译文件列表里面,而且该头文件没有任何文件引用它了,因此编译不会出错,把这个不存在的文件从文件列表删除了之后,这个小工程的该问题竟然就解决了。
4、后来想想,估计是VS2010画蛇添足,编译过程如果发现不存在的文件,本应该警告提示该文件不存在了,但是可能逻辑写得有点问题,把工程标记成了过期的,导致这个框每次都弹。测试了下VS2005没有这个问题,这也难怪为什么很多从VS2005升级上来的工程都遇到了这个问题,因为一些大工程文件太多了,有些无用的文件可能本地删除了,但是忘记从工程文件里面删除了,VS2005又不提示,导致了这个问题。
解决方案
1、一种显而易见的方案就是找到这个不存在的文件,直接从工程的文件列表里面删除即可,如果工程小,倒是可以这么干,如果工程很大,那就是体力活了。
2、还有一个方法是开发一个工具,解析下VS2010的vcxproj工程文件,这是个XML文件,解析并不困难,把里面的文件都校验一下,把不存在的文件直接找出来。
3、还是一个方法是我在网上(stackoverflow)看到的,通过DbgView工具来输出不存在的文件(此方法需要了解VS的devenv的配置的含义,以及一些脚本的配置方法,我不懂,因此依葫芦画瓢尝试了下,发现好用!),这种方法需要改下VS2010的IDE的配置文件:devenv.exe.config,这个文件的位置:此文件在%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\ 或者 %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\。
(1) 用一个文本编辑工具打开devenv.exe.config文件。
(2) 然后在</configSections>这行的前面添加下面的配置(注:如果是VS2012或者之后的版本value的值使用Verbose)
<system.diagnostics> <switches> <add name="CPS" value="4" /> </switches></system.diagnostics>
(3) 重启下VS。
(4) 打开DbgView,注意把Capture菜单里面的Capture Win32和Capture Events勾选上。
(5) 在VS里面F5开始调试,等"此项目已经过期"的框弹出来之后,去DbgView的输出里面找类似下面的输出(如果内容很多可以直接查找is missing或者not up to date这些关键字)。直接就定位到TARGETVER.H这个文件不存在了。
[36184] Project 'D:\MyCode\Study\HelloWorld\HelloWorld.vcxproj' not up to date because build input 'D:\MYCODE\STUDY\HELLOWORLD\TARGETVER.H'; is missing.
(6) 通过这个方法可以把所有不存在的文件都找到。
参考文档
[1] VS2010 always thinks project is out of date but nothing has changed http://stackoverflow.com/questions/2762930/vs2010-always-thinks-project-is-out-of-date-but-nothing-has-changed
- VS2010每次调试都出现“此项目已经过期”提示
- 启动调试时总是提示此项目已经过期的解决方案
- 启动调试时总是提示此项目已经过期的解决方案
- VisualStudio 启动调试时总是提示此项目已经过期的解决方案
- VS2010总是提示“此项目已过期”的一种原因
- 【错误集锦】VS按调试老是提示“项目已经过期”
- vs2008每次build都会重新编译链接 && 项目已经过期
- vc调试总是提示项目已过期
- 关于安装vs2012后,vs2010每次编译都重新生成,即生成过期
- 每次都一样,我已经知道结果!
- CSDN发表文章出现"已经阻止此软件,因为无法验证其发明者"的提示,在2003
- VS2010调试低版本的项目,提示:“无法启动程序”
- IE8浏览器每次都有提示设置
- Visual Studio .NET 每次调试时都重新生成所有项目的解决方法
- Visual Studio .NET 每次调试时都重新生成所有项目的解决方法
- 关于新版ADT每次创建项目都出现appcompat_v7的问题
- 关于新版ADT每次创建项目都出现appcompat_v7的问题
- 关于新版ADT每次创建项目都出现appcompat_v7的问题
- Math类
- 安卓错误日志收集
- CRM2016中通过WEB API获取选项集(optionset)的全部选项
- C/S通信模式介绍
- 关于C语言的一个小问题
- VS2010每次调试都出现“此项目已经过期”提示
- 笔记 :malloc的使用
- poj 3252 Round Numbers(二进制数位DP)
- 自己驱动自己—Python代码写接口测试(一)
- JDK源码分析(1)-java.util.ArrayList
- 第三方登录(微博)
- 深入剖析Guice(Google依赖注入框架)
- 数据结构实验之二叉树七:叶子问题
- Atitit prj 项目管理与行政管理(1)------项目环境的概览与建立