Иногда моя сборка этой ошибке.
0>MSBUILD : error MSB4166: Child node "3" exited prematurely. Shutting down.
Он кажется совершенно случайным и я'вэ не был в состоянии воспроизвести его на волю. Я'м работает VS2010 с Win7 x64 с помощью MSBuild 4.0, но эта проблема, кажется, платформы и независимые ОС. Я'м построение решений в параллельных (/м + переключатель BuildInParallel=true) и я Дон'т хотите, чтобы отключить эту функцию, потому что я'м составление заявки, содержащей 800+ проекты . Любая идея, как ее решить?
Редактировать: когда я установил .Объем 4.5 предварительного просмотра разработчика, ведение журнала ошибок была улучшена в 4.5 MSBuild и теперь строка об ошибке выглядит так:
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 с /М /П:BuildInParallel=true и сборка была не в CI-сервер. Он всегда был не во втором составляющие с ошибкой:
ошибка MSB4166: дочерний узел на "3" и вышел досрочно. Остановки.
Добавление /nodeReuse:ложной исправлено проблема.
Это хорошая ссылка: https://blogs.msdn.microsoft.com/msbuild/2007/04/16/node-reuse-in-multiproc-msbuild/
Как обсуждалось в обмене комментариях на вопрос:
странно то, что я'использование 64бит MSBuild на 64бит Win7 на ноутбук с 4 ГБ физической и "неограниченное&я м; виртуальной памяти. Процесс MSBuild использует около 1 ГБ оперативной памяти (1,5 ГБ пик). – Ludwo 4 часа назад
в
Я'м через 32бит MSBuild на 32-разрядной относится к настольных ПК с 2 ГБ физической и аналогично неограниченной виртуальной памяти. Странная вещь заключается в том, что сбой происходит, когда физическая оперативная память полностью израсходованы. Это's, как я've получили ноль виртуальной памяти! – Кевин Вермеера 3 часа назад
в
да, кажется, что в MSBuild не использует виртуальной памяти :) – Ludwo 2 часа назад
Похоже, в MSBuild было't использование виртуальной памяти. Я сделал несколько тестов (начиная кучу программ), и казалось, что ничего с помощью виртуальной памяти. Я сделал некоторые поиски, которые привели меня, чтобы проверить
Control Panel -> System -> Advanced -> Performance -> Advanced -> Virtual Memory
и обнаружили, что существует параметр, который ограничивает моей виртуальной системы размер памяти. Я думал, что виртуальная память должна быть практически бесконечна, или, точнее, 4 ГБ для каждого процесса на 32-бит XP. Я не'т приближается к этому пределу. Однако, мое виртуальное пространство памяти был ограничен...0 мегабайт. Как не крути, кто бы или что бы ни делал, что.
Я изменил это, чтобы выделять не менее 1024 МБ, а максимальный 4096 МБ виртуальной памяти. Я добавил в "Виртуальный размер" в столбец в процесс Explorer, который вместе с "с системой фиксации" на графике, показывает, что теперь я использую больше памяти, чем размер физической памяти палочки.
Это исправили мои проблемы. К сожалению, моя система перемалывает в ближайшем привале, когда он пытается разделе Память, но, что's лучше, чем аварии. Я сделала повторно включить параллельную сборку; он распараллеливает и использует много ресурсов процессора, хотя у меня ОЗУ (что верно для большинства из файлов) и опускается до 1% загрузки ЦП, когда у меня больше нет памяти. Когда эти документы готовы, скорость восстанавливается.
В моем случае, ответ был обновить Antlr. Очевидно, что это применимо только при использовании Antlr в вашем проекте.
Мы получили ту же ошибку в 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-узел объекта повторного использования установка MSBUILDDISABLENODEREUSE переменной окружения =1
.
Возможно, это'с строить-эквивалент состязания?
http://blogs.msdn.com/b/msbuild/archive/2007/04/26/building-projects-in-parallel.aspx
Если вы используете обычный ссылочный тег для зависимостей на выходе еще один проект, который является частью сборки (а не ProjectReference тег) вы могли бы получить ситуацию, когда, как правило, проект Х, прежде чем выполнение проекта г (зависит от проекта x'ы выходной), но иногда они строят одновременно, и в этом случае выход х бы не было, когда вы пошли искать его, вызывая г на провал. Я могу'т найти ничего о том, что этакое вывод ошибок в MSBuild дает в этой ситуации, хотя (и Дон'т иметь легкодоступный способ проверить это прямо сейчас), так что может и не быть.
Еще непоследовательность в решениях (часто успешно, иногда не удается) заставляет меня подозревать, что нечто подобное вполне может быть причиной.
Вы может быть запущена из памяти, в результате чего один из построить процессы, чтобы обанкротиться - это не менее, если вы используете /м:2, чтобы ограничить его до двух одновременных строит? (если у вас есть более чем 2 ядер)
Или, если вы можете одолжить немного оперативной памяти от другой машины, или увеличить размер подкачки, это происходит реже, когда вы установили больше памяти на вашем компьютере построения?
Просто хотел добавить мое дело и постановление для тех, кто не'т, способные решить эту проблему с других ответов здесь.
Для меня это было, потому что я случайно добавил ссылку на проект на .Проект Net рамках 4.6.1 с одним из моих .Чистый стандарт 2.0 проектов. На момент написания этой статьи, и против 2017 15.9.12, вы можете едва заметить это как "желтого треугольника" и символ, отображаемый в обозревателе решений в ваших ссылках что-то не так. У меня есть решение с несколькими проектами, и где-то в середине построения решения, оно не с этой "и узел завершен преждевременно я ребенок х&;, на случайных проектов, и не согласуется, где это не удалось.
Однажды я проследил ошибка нарушителя .Чистый рамках указанного проекта 4.6.1, я принял это .Проект Net рамках 4.6.1 для .Чистая стандарта 2.0, и все эти дочерний узел х ошибок ушли.
Надеюсь, что это помогает кто-то читает.