Windows 更新后不需要的 C++ 项目重建

Posted

技术标签:

【中文标题】Windows 更新后不需要的 C++ 项目重建【英文标题】:Unwanted rebuilds of C++ project after a Windows update 【发布时间】:2018-01-25 04:44:26 【问题描述】:

Windows 更新后,Visual Studio 总是重新构建我的 C++ 项目。诊断日志说:

Project 'my.vcxproj' not up to date because 'C:\WINDOWS\SYSTEM32\TZRES.DLL'
was modified at 01/25/2018 07:43:09, which is newer than 'DEBUG\MY.LIB'
which was modified at 01/25/2018 05:28:05

为什么 Visual Studio 会检查 system32 DLL 的时间戳?尤其是那些甚至没有链接的?

重建无济于事,因为 Windows 更新已在未来几个小时内设置了该 DLL 的创建、修改和上次访问时间戳。顺便说一句,DLL 的描述是“时区资源 DLL”,不知道是否相关。

【问题讨论】:

我也对这种依赖关系感到困惑,在编译器 .tlog 文件中找到了它。我怀疑有人在调试 CRT 中的 TZ 支持代码而忘记删除它。不是唯一的,C:\Windows\Globailzation\Sorting\SortDefault.nls 是另一个,也影响 CRT。据说在 v15.8 中已修复,但我的水晶球说他们接下来必须修复 SortDefault.nls :) 【参考方案1】:

更新

查看comment by Aleksey Katargin,您似乎可以通过将$(SystemRoot)\system32 添加到VC++ 排除项来自行修复此问题。

相同日志的相同问题。 Visual Studio 专业版 15.9.0 win10更新后出现问题 至 1803 通过将 $(SystemRoot)\system32 添加到 VC++ 排除来修复


原始回复

看来我们并不孤单Up to date projects compiled again because of TZRE.DLL date stamp is in the future after a windows update

糟糕的解决方案是等到那个时间过去,问题就会神奇地消失。 我刚遇到同样的问题,我的 TZRES.DLL 文件是 17/07/2018 19:54,现在时间是 17/07/2018 15:15。我的解决方案构建需要 10 分钟,所以今天在办公室将是糟糕的一天,除非我破解文件的修改日期,但我不知道这会产生什么影响。或者改变你的系统时钟,我不能,因为我的被组策略锁定了。

(对于其他读者) 您可以通过转到工具->选项->构建和运行->MSBuild 项目构建输出详细度->详细来找出此问题的原因。然后编译,然后搜索短语将被编译

[myfilename] 将被编译为 C:\WINDOWS\SYSTEM32\TZRES.DLL 于 2018 年 7 月 17 日 19:54:54 修改。

【讨论】:

以上是关于Windows 更新后不需要的 C++ 项目重建的主要内容,如果未能解决你的问题,请参考以下文章

TortoiseSVN 图标覆盖更新到 Windows 10 后不显示

安装重建的 C# 项目后未处理的异常

C++中的函数声明后不需要分号(';')吗?

XAMPP + Wordpress - 更新后不启动

序列化类更新后不生效

解决方案WAS部署的项目修改web.xml后不生效