Lud*_*dwo 27 msbuild multithreading msbuild-4.0
有时我的构建会因此错误而失败.
0>MSBUILD : error MSB4166: Child node "3" exited prematurely. Shutting down.
Run Code Online (Sandbox Code Playgroud)
它似乎是完全随机的,我无法随意重现它.我正在运行VS2010 Win7 x64 MSBuild 4.0,但这个问题似乎是平台和操作系统无关.我正在并行构建解决方案(/ m switch + BuildInParallel = True),我不想禁用此功能,因为我正在编译包含800多个项目的应用程序.知道怎么解决吗?
编辑:当我安装.NET 4.5开发人员预览时,MSBuild 4.5中的错误日志记录得到了改进,现在错误字符串如下所示:
error MSB4166: Child node "3" exited prematurely. Shutting down. Diagnostic information may be found in files in the temporary files directory named MSBuild_*.failure.txt
Run Code Online (Sandbox Code Playgroud)
我可以在Temp文件夹中找到错误日志文件.这是MSBuild _*.failure.txt文件的内容:
System.InvalidOperationException: BuildEventArgs has formatted message while serializing!
at Microsoft.Build.Framework.LazyFormattedBuildEventArgs.WriteToStream(BinaryWriter writer)
at Microsoft.Build.Framework.BuildMessageEventArgs.WriteToStream(BinaryWriter writer)
at Microsoft.Build.Shared.LogMessagePacketBase.WriteToStream(INodePacketTranslator translator)
at Microsoft.Build.BackEnd.NodeEndpointOutOfProcBase.PacketPumpProc()
Run Code Online (Sandbox Code Playgroud)
经过大量的时间和研究试图解决此问题,我找到了一个对我有用的解决方案。我将msbuild与/ m和/ p:BuildInParallel = true一起使用,并且CI服务器中的构建失败。在第二个组件中总是失败,并显示以下错误:
错误MSB4166:子节点“ 3”过早退出。闭嘴
添加/ nodeReuse:false可解决此问题。
这是一个很好的参考:https : //blogs.msdn.microsoft.com/msbuild/2007/04/16/node-reuse-in-multiproc-msbuild/
您可能会耗尽内存,导致构建子进程之一失败 - 如果您使用 /m:2 将其限制为两个并发构建,失败是否会减少?(假设你有超过2个核心)
或者,如果您可以从另一台机器借用一些 RAM,或者增加交换大小,那么当您在构建机器上安装更多内存时,这种情况发生的频率是否会降低?
| 归档时间: |
|
| 查看次数: |
22252 次 |
| 最近记录: |