2014-02-18 24 views
0

我有一个很奇怪的问题,我怀疑的最后一次希望是来自这个社区。CruiseControl在vmware工作站上的构建时间降低

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

例如,正常的编译时间应该在48到50分钟内完成。在我注意到时间降到1小时45分钟的时候,时间慢慢退化。我通常不会监视系统的性能,而是构建的结果 - 所以我从来不知道。克隆的机器将恢复系统,使其在1小时12分钟内建立。

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

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

任何人都可以想到我可以寻找什么来诊断这个问题?什么可能会降低系统的性能,因此在一个月的时间里,明智的安装程序编译可能会在其编译时间上最多松开45分钟? Build Machine操作系统:XPsp3 HDD:SSD 其他版本可以在同一台主机上运行,​​并且可以同时运行,但在2013年11月之前,这对性能没有影响。

+0

您是否尝试过从命令行运行构建任务?它在那里同样缓慢吗? –

+0

对不起,很长时间没有回复。是的,Wise Installer版本与命令行同样没有响应,所以这不是'巡航控制问题'。问题是明智的安装程序本身。 物理输出文件在正常时间段内创建。然而,明智的安装程序,每个进程挂起另外40分钟。我有一个进程来构建一个合并模块,另一个进程用于主设置。在这两种情况下,Wise for Windows Installer都会精确挂起另外40分钟。 此外,当打开IDE for Wise时,如果我触摸Files视图,应用程序将挂起。 –

回答

0

这个问题实际上与我们的visual studio构建。

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

当visual studio编译时,它会将每个.net文件的程序集信息添加到注册表中。由于版本号更改,注册表项更改。注册表从不清理。所以我刚刚积累了一年或一年以上的注册表条目。

明智的安装程序运行时,它正在扫描注册表,我不确定为什么现在。使用ProcMon,我们可以看到进程正在运行并阅读注册表。由于注册表膨胀得太多,它会减慢构建时间。

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

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

此外,我对该项目的明智的工作室设置做了一个更改。我将它切换到mszip压缩,而不是使用高压缩。我们的输出文件大50MB,但构建时间要快得多 - 即使是在新机器上。

SOLUTION:

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

问题是公司已经改变了更改程序集版本和文件版本值的过程。我们很少知道重建会在每个版本的注册表中留下汇编信息。所以,任务列表现在看起来像:

  • 清洁.NET解决方案
  • 增加版本的文件版本和装配版本。
  • 构建.NET解决方案

希望这有助于别人谁遇到同样的问题。