我使用TeamCity,后者依次调用msbuild(.NET 4)。我有一个奇怪的问题,就是在构建完成之后(构建是否成功并不重要),msbuild.exe保持打开状态并锁定其中一个文件,这意味着TeamCity每次尝试清除其工作目录,它将失败,并且无法继续。
这几乎每次都会发生。
我真的迷失了这一点,因此我将尝试提供尽可能多的细节。
- 服务器是2 GB RAM的Intel Core i7,具有Windows Server 2008标准64位SP2。
- 在TeamCity中,msbuild运行器配置有
/m
命令行参数(表示使用多个内核) - 有问题的文件始终是path中.NET项目之一中引用的相同外部DLL
External Tools\Telerik\Telerik.Reporting.Dll
。(在External Tools
目录中包含其他几个.DLL文件,它们的路径结构相似,它们从未引起此问题)。当前,这是Telerik报告的试用版,以防万一。 - 发生问题时,
msbuild.exe *32
任务管理器中始终列出几个进程:我相信有7个进程。使用进程资源管理器,它们看起来都像顶级进程(没有父级)。它们都使用20-50MB的内存和0.0%的CPU。 - 如果我等待1-3分钟,msbuild.exe进程将自行退出,然后TeamCity可以正确更新工作目录。
- 如果我手动终止msbuild进程,TeamCity的更新将立即再次起作用。
- Windows中的索引服务已关闭(尽管前两点几乎可以肯定是msbuild.exe引起了问题)。
- Telerik.reporting.dll没有特殊属性。唯一的SVN属性是
svn:mime-type = application/octet-stream
有人遇到过吗?
/m /nr:false
,我将运行一些构建并查看其运行方式。谢谢