VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 165|回复: 0

[原创] 修复被破坏的 vs 工程设置

[复制链接]
70_avatar_middle
最佳答案
0 
在线会员 发表于 2020-7-25 20:45:54 | 显示全部楼层 |阅读模式
缘起前几天打开工作项目进行编译,没想到居然报错,明明前一天编译还正常的。简单排查后,临时修复了问题。但是今天新建工程时居然还有相同的问题,是可忍熟不可忍?本文记录了排查过程,希望对各位小伙伴儿有帮助。话不多说,上菜。
初遇错误不方便使用实际工程截图,就用我新建的测试工程吧,提示的错误是一样的。
修复被破坏的 vs 工程设置
我的第一反映是,难道 SDKDDKVer.h 被意外删掉了?赶紧使用 everything 搜一下。
修复被破坏的 vs 工程设置
本地有这个文件,而且这个文件的位置看上去没问题,但是为什么编译的时候会提示找不到这个文件呢?看看工程配置吧。
查看工程配置在选定的工程上右键,属性 打开工程属性页,并查看 配置属性, VC++ 目录,包含目录 的值,如下图。
修复被破坏的 vs 工程设置
当看到 BCG 相关的字眼时,我突然想起来最近刚装了 BCG,不会是 BCG 把包含路径给弄坏了吧?在继续调查之前,先确认一下这些值指向的路路径确实没有一个路径里包含 SDKDDKVer.h 。
查看包含目录的值在 vs 中,$() 包含的值是宏,会展开成实际的值。点击 宏(M)>>,就可以查看每个宏对应的值了。
修复被破坏的 vs 工程设置
经过一番查看,确实没有一个宏对应的路径包含 SDKDDKVer.h 。看来确实是 BCG 给弄乱了!
临时解决因为项目比较紧,从同事那拷贝了正确的包含路径,编译,通过!这个问题暂时就放下了。没想到……
再遇此错误今天准备编写简单的测试代码,于是新建一个工程,没想到编译时有报了同样的错误。
修复被破坏的 vs 工程设置
根据上次的调查结果,是 BCG 把包含路径给弄乱了。简单查看工程属性中的包含路径确认了这点。
新建工程也出了同样的问题,说明修改的是公共的位置。趁着周末有时间,正好调查调查 BCG 是怎么把自己加到包含目录里的。
追本溯源很快脑子中浮现了两个思路:
  • 卸载 BCG 后,重新安装,在安装的过程中使用 procmon 监视安装过程中对文件和注册表的写操作。
  • 直接在本地文件和注册表中搜索包含路径中出现的 BCG 相关的关键字。
我采用了第二个思路。先尝试在文件中搜索,如果搜不到再到注册表中搜索。说干就干,先在工程文件中搜索bcgpro,如下图:修复被破坏的 vs 工程设置
没搜到,在意料之中。新建工程的时候,应该会从某个公共的位置读到这个值。
正如我在之前文章中介绍的那样,.vcxproj 文件中可以通过导入 .props 文件引入一些属性。基本上每个新建的工程都会有一些默认的导入项,如下图:
修复被破坏的 vs 工程设置
BCG 会不会修改的这些文件中的一个呢?请出 FileLocator,并按下图输入关键字搜索,很幸运,搜到了。
修复被破坏的 vs 工程设置
打开 Microsoft.Cpp.Win32.user.props 查看,如下图:
修复被破坏的 vs 工程设置
果然被 BCG 改动过了!
彻底修复在其它机器上找一份没改动的文件替换,关闭工程后再次打开编译,一切正常!在 vs 中新建一个工程编译,也正常!至此,我们从根本上解决了问题!
总结
  • 在 vs 中 $() 包围的值是宏,可以展开成实际的值。
  • .props 可以指定一些属性,比如增加一些自定义的包含路径。
  • FileLocator 搜索文件内容真是好用!强烈推荐!
参考资料《Inside the Microsoft Build Engine —— Using MSBuild and Team Foundation Build》

评分

参与人数 3驿站币 +4 热心值 +7 收起 理由
43_avatar_small caicaiwuguo + 2 + 2 支持原创!
58_avatar_small thzzl + 2 + 2 支持原创!
75_avatar_small wl1383838438 + 3 很给力!

查看全部评分





上一篇:继续分享 5 个 vs 调试技巧
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-8-6 06:39

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表