我正在开发一个非常简单的 C# 解决方案,其中包含两个项目:一个类库和一个库的安装程序。构建类库本身大约需要一秒钟。然而,构建安装程序需要非常/难以置信的长时间。更有趣的是,CPU 似乎在编译期间“暂停”,单核峰值持续 5 到 10 秒,然后几秒内接近 0。
安装程序项目非常简单。它只是类库的输出(单个 DLL,大约 2MB)和一些注册表项。
有什么想法可能导致这种情况吗?
我正在开发一个非常简单的 C# 解决方案,其中包含两个项目:一个类库和一个库的安装程序。构建类库本身大约需要一秒钟。然而,构建安装程序需要非常/难以置信的长时间。更有趣的是,CPU 似乎在编译期间“暂停”,单核峰值持续 5 到 10 秒,然后几秒内接近 0。
安装程序项目非常简单。它只是类库的输出(单个 DLL,大约 2MB)和一些注册表项。
有什么想法可能导致这种情况吗?
如果有人在 google 上偶然发现了这个问题,而其他解决方案似乎都无法解决您的问题,并且您像我一样在 USB 驱动器上工作......不要使用 USB 驱动器。尽管您只是在 TFS 中设置了一个工作区,然后将 USB 拖动到它周围,这并不值得。只需在本地驱动器上创建另一个工作区,并仅在需要时使用 USB。
我们遇到了这个确切的问题,发现 msi 构建过程在 c:\Documents and Settings\username\Local Settings\Temp 文件夹中创建了未清理的 vsi*.tmp 文件,因此随着时间的推移而建立。存在的这些文件越多,创建 msi 所需的时间就越长。我们通过使用计划任务删除任何超过 24 小时的文件来解决我们的问题。
注意 - 对于我们的情况,服务器是 Windows Server 2003 R2 - 因此是 c:\Documents and Settings 前缀。如果您使用的是 Windows Vista 或 Windows 7,您可能会通过在 c:\Users\username 下搜索 vsi*.tmp 来找到这些文件。
经过一段时间的修改后,我发现将 Register 设置更改为 NOT REGISTER for COM 以支持 DLL 构建执行注册,安装程序构建变得更加可靠(并且更快)。我不确定这是否构成解决方案,因为 COM 注册应该可以正常工作。但是,我至少能够解决这个问题。