0

我有一个非常奇怪的问题,我怀疑我最后的帮助希望来自这个社区。

我有一个构建系统,其中包含编译明智安装程序包的三个不同元素。我看到的症状是这些项目的构建时间在虚拟机上随着时间的推移而明显下降。这发生在多台虚拟机上,自 2013 年 11 月以来一直如此。幸运的是,我有克隆虚拟机的习惯,并在 12 月初克隆了机器,当时症状处于早期阶段。

例如,正常的构建时间应该在 48 到 50 分钟内完成。时间慢慢下降,当我注意到问题时,时间已经下降到 1 小时 45 分钟。我通常不会监控系统的性能,而是监控构建的结果——所以我从来不知道。我拥有的克隆机器将恢复系统,使其在大约 1 小时 12 分钟内构建。

分析构建时间,所有时间都被明智的安装程序使用。我已尝试卸载并重新安装该应用程序。我已经清理了临时目录,运行了 chkdsk 和其他正常的调试操作。

明智的安装程序项目之一是需要重新编译的合并模块,因为它会更新数据库文件。这应该只需要 8 分钟来编译。需要超过 1/2 小时。

谁能想到我可以寻找什么来诊断这个问题?什么会使系统降级,从而在一个月的时间里,明智的安装程序编译可能会在其构建时间上浪费多达 45 分钟?构建机器操作系统:XPsp3 硬盘:SSD 其他构建确实在同一主机上运行,​​并且可以同时运行,但在 2013 年 11 月之前,这对性能没有影响。

4

2 回答 2

0

如果明智的安装程序导致问题,那么您可以尝试运行 procmon 以查看导致挂起的原因。正如 Alois Kraus 最近解释的那样,Windows 性能记录器是另一个有用的工具 - http://geekswithblogs.net/akraus1/archive/2014/04/30/156156.aspx

于 2014-05-05T19:47:33.327 回答
0

问题实际上在于我们的视觉工作室构建。

对于每个构建,我们都会增加二进制文件的版本号。我们有一个执行和更新所有 proj 文件中的值的过程。

当 Visual Studio 编译时,它会将程序集信息添加到每个 .net 文件的注册表中。由于版本号更改,注册表项更改。注册表永远不会被清理。所以我刚刚积累了一年或更长时间的注册表项。

当 wise 安装程序运行时,它正在扫描注册表,我现在不确定为什么。使用 ProcMon,我们可以看到进程正在运行并读取 reg。由于注册表已经膨胀得如此之多,它会减慢构建时间。

现在最大的问题是如何在新的构建机器上防止这个问题?如何清理我们构建的所有 CLSID 条目?

在原始的 Win7 构建系统上,整个构建在 20 分钟内完成!

此外,我对项目的明智工作室设置进行了另一项更改。我没有使用高压缩,而是将其切换为 mszip 压缩。我们的输出文件大了 50MB,但构建时间要快得多——即使在新机器上也是如此。

解决方案:

在更改版本号之前添加一个干净的解决方案任务。这一变化导致几个月的构建时间非常一致。

问题是该公司更改了更改程序集版本和文件版本值的过程。我们几乎不知道重建会在每次构建时将程序集信息留在注册表中。所以任务列表现在看起来像:

  • 干净的 .NET 解决方案
  • 增加文件版本和程序集版本的版本。
  • 构建 .NET 解决方案

希望这可以帮助遇到同样问题的其他人。

于 2014-05-08T10:30:28.530 回答