때로는 내 빌드가 실패하고 이 오류가 있습니다.
0>MSBUILD : error MSB4166: Child node "3" exited prematurely. Shutting down.
그것은 있을 것 같고 나는've 되지 않을 재현할 수 있다. 나는'm 실행 VS2010Win7x64MSBuild4.0 그러나 이 문제가 될 것으로 보인 플랫폼 및 OS 독립적입니다. 나는'm 솔루션을 구축을 병행(/m 전환+BuildInParallel=True)지't 원하는 이 기능을 사용하지 않기 때문에 나는'm 컴파일을 포함하고 있는 응용 프로그램 800+프로젝트입니다. 어떤 아이디어는 어떻게 그것을 해결하기 위해시겠습니까?
편집:내가 설치됩니다.NET4.5 기,오류 로그에서 개선 된 MSBuild4.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
내가 찾을 수 있습니다에서 오류 로그 파일 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()
후에는 시간이 많이 연구이 문제를 해결하기 위해 노력하고 문제가 해결책을 발견하는 나를 위해 일했습니다. 내가 사용하 msbuild 과/m/p:BuildInParallel=true 및 빌드가 실패에 CI 서버입니다. 그것은 항상에서 실패는 두 번째 componen 오류가 있:
오류 MSB4166:아동 노드"3"종료 됩니다. 을 종료합니다.
추가/nodeReuse:false 정 문제입니다.
이것은 좋은 참고: https://blogs.msdn.microsoft.com/msbuild/2007/04/16/node-reuse-in-multiproc-msbuild/
으로 논의에서 교환에 대한 의견의 질문:
이상한 것은 저는'm 를 사용하여 64bit MSBuild 에서 64 비트 Win7 노트북 4GB 의 물리적,"무제한"조건을 만족해야 합니다.** MSBuild 프로세스를 사용에 대한 1GB RAM(1.5GB peak). –Ludwo4 시간 전에
I'm 를 사용하여 32bit MSBuild 에서 32 비트 WinXP 바탕으로 2GB 의 물리적 및 마찬가지로 무제한 조건을 만족해야 합니다.** 이상한 것은 충돌이 발생하는 경우 물리적 RAM 은 완전히 사용됩니다. It's like I've 어로 가상 메모리! –Kevin 베르메르의 3 시간 전에
Yes,그것은 다음과 같 MSBuild 되지 않은 가상 메모리를 사용:)–Ludwo2 시간 전에
그것처럼 보일 MSbuild 아't 를 사용하여 가상 메모리입니다. 나는 몇 가지 테스트(을 시작하는 프로그램)및 그것처럼 보였아무것도었을 사용하여 가상 메모리입니다. 나는 일부 검색어는 나를 지도하는 검사
Control Panel -> System -> Advanced -> Performance -> Advanced -> Virtual Memory
고 있다는 것을 발견 있는 설정한 가상 메모리 크기 시스템입니다. 내가 상상했던 그는 가상 메모리를 효과적으로 무한한 또는 더 정확하게,4 기가바이트에 대한 각 프로세스에서 32 비트 XP. 었't 접근이 제한. 그러나 나의 가상 메모리 공간이 제한되었다.0 메가바이트. 멋진 않는,누구든 그렇게 하지 않았습니다.
나이에 최소 할당 1024MB 최대 4096MB 의 가상 메모리입니다. 추가했"가상 크기"열에서프로세스 Explorer과 함께,"시스템 Commit"그래프,보여 줍니다 나는 지금보다 더 많은 메모리를 사용하여액에서 사용할 수 있는 물리적 RAM 스틱입니다.
이 내 문제입니다. 불행하게도,내가 갑자기 시스템을 정지할 때마다려고 페이지를 메모리,하지만 그's 보다 더 나은 충돌이 발생합니다. 았다 다시 사용하려면 병렬 구축,그것을 병렬화하여 사용하는 동안 CPU 나 RAM 왼쪽(는 사실에 대한 대부분의 파일)와 딥을 1%의 CPU 사용할 때 나는 더 이상 RAM. 면 해당 파일이 완료되면,속도가 복원됩니다.
우리는 같은 msbuild 오류 로그의 파일이 있었다
UNHANDLED EXCEPTIONS FROM PROCESS 10260:
=====================
05/01/2019 18:41:55
System.IO.IOException: Pipe is broken.
at System.IO.Pipes.PipeStream.WinIOError(Int32 errorCode)
at System.IO.Pipes.PipeStream.BeginWriteCore(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback callback, Object state)
at System.IO.Pipes.PipeStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.Pipes.PipeStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at Microsoft.Build.BackEnd.NodeEndpointOutOfProcBase.RunReadLoop(Stream localReadPipe, Stream localWritePipe, ConcurrentQueue`1 localPacketQueue, AutoResetEvent localPacketAvailable, AutoResetEvent localTerminatePacketPump)
===================
우리는 할 수 있었다 문제를 해결을 해제하여 msbuild-node 다시 사용하여 이 기능을 설정된 환경 변수MSBUILDDISABLENODEREUSE=1
.
아마도 그것이's build-해당하는 경쟁 조건?
http://blogs.msdn.com/b/msbuild/archive/2007/04/26/building-projects-in-parallel.aspx
를 사용하는 경우에는 일반 참조 태그에 대한 의존성에서 출력의 다른 프로젝트의 일부를 구축(아닌 ProjectReference 태그)을 받을 수 있는 상황이 일반적으로 프로젝트 X 를 완료하기 전에 프로젝트 Y(에 따라 프로젝트 X's 출력)그러나 때때로 그들이 구축하는 동시에,이 경우 출력의 X 존재하지 않을 경우 Y 를 찾아 갔을 일으키는 원인이 되 Y 실패합니다. 수't 찾기에 대해 아무것도 어떤 종류의 오류 출력 MSBuild 에서 제공하는 상황이지만(그리고 don't 가 쉽게 사용할 수 있는 방법을 테스트 단지 지금),도록되지 않을 수 있습니다.
아직도 불일치 결과(자주 성공적인,가끔 실패하면)리드하는 의심 뭔가 잘 될 수 있는 원인입니다.
다만 추가하고 싶은 나의 케이스와 해상도는 사람들을 위해 아't 이 문제를 해결할 수있는 다른 응답을 여기에.
나를 위해,그것이 있었기 때문에 실수로 추가 프로젝트 참조.NET Framework4.6.1 프로젝트의 능력을 보여주기 위해.NET 표준 2.0 프로젝트입니다. 이 글을 쓰고 대 2017 15.9.12 할 수 있습이"황색 삼각형"에 표시된 기호 솔루션 탐색기에서 참조하는 뭔가 틀렸다는 것에 동의합니다. 나는 솔루션으로 여러 가지의 프로젝트의 중간 어딘가에 구축 솔루션을 제대로 작동하지 않을 것입이"아동 노드 X 종료 조",랜덤 프로젝트,그리고 결코 일관성 있는 실패했습니다.
일단 추적 실수하여 잘못.NET Framework4.6.1 참조하는 프로젝트가 변환이다.NET Framework4.6.1 프로젝트니다.NET 표준 2.0,그리고 이러한 모든 하위 노드 X 오류를 갔습니다.
희망이 사람이라면 누구나 읽고 있습니다.