我使用TeamCity,它又调用msbuild(.NET 4)。我遇到了一个奇怪的问题,就是在构建完成后(无论构建是否成功),msbuild.exe仍然保持打开状态,并锁定其中一个文件,这意味着每次TeamCity尝试清除其工作目录时都会失败,无法继续。
这几乎每次都会发生。
我真的对这个问题感到迷惑,因此我会尽可能提供更多详细信息:
- 服务器是Intel Core i7、2 GB RAM,带有Windows Server 2008标准64位SP2。 - 在TeamCity中,msbuild运行程序配置了/m命令行参数(表示使用多个核心) - 问题文件始终是同一个外部DLL文件,在.NET项目中引用,路径为External Tools\Telerik\Telerik.Reporting.Dll。(在类似路径结构的External Tools目录中包括其他几个.DLL文件从未导致此问题。)目前这是基于Telerik报告的试用版,如果有任何区别请告诉我。 - 当出现问题时,任务管理器中总是列出几个msbuild.exe *32进程:我认为有7个。使用Process Explorer,它们都看起来像顶级进程(没有父进程)。它们都使用20-50MB RAM和0.0% CPU。 - 如果我等待1-3分钟,msbuild.exe进程将自动退出,然后TeamCity就可以正确更新工作目录了。 - 如果我手动终止msbuild进程,TeamCity的更新将立即再次工作。 - 在Windows中关闭了索引服务(尽管前两个点几乎证实了是msbuild.exe导致问题)。 - Telerik.reporting.dll上没有特殊属性。唯一的SVN属性是svn:mime-type = application/octet-stream。
有人遇到过这种情况吗?
这几乎每次都会发生。
我真的对这个问题感到迷惑,因此我会尽可能提供更多详细信息:
- 服务器是Intel Core i7、2 GB RAM,带有Windows Server 2008标准64位SP2。 - 在TeamCity中,msbuild运行程序配置了/m命令行参数(表示使用多个核心) - 问题文件始终是同一个外部DLL文件,在.NET项目中引用,路径为External Tools\Telerik\Telerik.Reporting.Dll。(在类似路径结构的External Tools目录中包括其他几个.DLL文件从未导致此问题。)目前这是基于Telerik报告的试用版,如果有任何区别请告诉我。 - 当出现问题时,任务管理器中总是列出几个msbuild.exe *32进程:我认为有7个。使用Process Explorer,它们都看起来像顶级进程(没有父进程)。它们都使用20-50MB RAM和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
,我将运行几个构建并观察其效果。谢谢。 - gregmac