您的位置:首页 > 其它

出错总有原因 之 工程每次都重新编译

2014-02-08 22:41 246 查看
使用VSTS2010编译的时候,偶尔遇到某些工程,明明已经编译过了的,但是选择编译整个Solution的时候,却没有忽略这些Project,而将这些Project还是原样重新编译过一次。

这里主要讲讲自己遇到过的情况以防大家遇到类似的问题。

其中一个原因是,自己修改了系统时间做一些功能的测试,在系统时间修改之后,又做了代码的修改。譬如说,先将时间改到了一周之后,做了测试,发现了问题,立马做了代码的修正,然后继续测试,测试没问题了自己继续工作。可是系统时间后来同步到了正确的时间,于是编译的时候,编译器发现有个CPP文件的改动时间是新于dll或者exe生成的时间,自然就会认为是新的改动,于是就会每次重新编译啦。

另外一种情况是,某个头文件加入到了工程之中,但是后来改动中发现,并不需要这个头文件,于是从本地删除了这个头文件,而且去除了所有包含这个头文件的地方,但是忘记从工程中删除这个头文件了,在这种情况下,VSTS2010也会每次重新编译这个工程的。

那么,如何找出问题所在呢?

其实很简单,在VSTS2010的菜单项Tools-->Options-->Projects and Solutions-->Build and Run中,里面可以设置"MSBuild project build output verbosity"和"MSBuild project build log file verbosity"的级别,从Normal改为Detailed便可以从Output或者编译日志中获得更多信息;如果需要更详细信息的话,还可以将这个级别设置成为Diagnostic呢,不过一般情况下,Diagnostic包含的更详细信息没有什么特别的意义。

题外话,关于修改时间导致的编译问题,我遇到过的另外一种情况就是,做了改动,也编译成功了,但是实际运行的时候改动没有生效,断点也和当前代码不一致。而问题出在这个dll是在我改动时间之后编译成功的;当时间同步会当前时间后,虽然修改了代码,但是并没有替换掉更新的那个dll;这个时候,只需要Clean掉,重新编译即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: