【发布时间】:2011-04-24 14:37:37
【问题描述】:
我使用 TeamCity,它反过来调用 msbuild (.NET 4)。我有一个奇怪的问题,在构建完成后(它是否成功构建似乎并不重要),msbuild.exe 保持打开状态,并锁定其中一个文件,这意味着每次 TeamCity 尝试清除其工作目录,失败,无法继续。
这种情况几乎每次都会发生。
我真的迷路了,所以我会尽量提供尽可能多的细节。
- 服务器是 Intel Core i7、2 GB 内存、Windows Server 2008 标准 64 位 SP2。
- 在 TeamCity 中,msbuild runner 配置了
/m命令行参数(这意味着使用多个核心) - 有问题的文件总是在路径
External Tools\Telerik\Telerik.Reporting.Dll中的一个 .NET 项目中引用的相同外部 DLL。 (External Tools目录中包含的其他几个 .DLL 文件采用类似的路径结构,不会导致此问题)。目前,这是 Telerik 报告的试用版,以防万一。 - 当问题发生时,任务管理器中总是列出几个
msbuild.exe *32进程:我相信有 7 个。使用 Process Explorer,它们看起来都像顶级进程(没有父进程)。他们都使用 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
以前有人遇到过这个吗?
【问题讨论】: