時には私のビルドがこのエラーで失敗することがあります。
0>MSBUILD : error MSB4166: Child node "3" exited prematurely. Shutting down.
それは完全にランダムであるように思われ、私は自由にそれを再現することができませんでした。私はVS2010 Win7 x64 MSBuild 4.0を実行していますが、この問題はプラットフォームやOSに依存しないようです。私は並列にソリューションを構築しています(/ mスイッチ+ 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
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()
質問へのコメントの交換で議論されているように:
奇妙なことは、私が64bit Win7ノートパソコンに64bit MSBuildを使用していて、物理的で無制限の仮想RAMを4GB搭載していることです。 MSBuildプロセスは約1GBのRAM(最大1,5GB)を使用しています。 - Ludwo 4時間前に
32ビットMSBuildを32ビットWinXPデスクトップで使用しています.2GBの物理メモリと同様に無制限の仮想RAMがあります。奇妙なことは、物理RAMが完全に使い果たされたときにクラッシュが発生することです。それは私の仮想メモリがゼロのようなものです! - Kevin Vermeer 3時間前
はい、MSBuildが仮想メモリを使用していないようです:) - Ludwo 2時間前
MSbuildが仮想メモリを使用していなかったようです。私はいくつかのテストを行い(プログラムの束を始めた)、仮想メモリを使用していない何かのように思えました。私はチェックするためにいくつかの検索を行った
Control Panel -> System -> Advanced -> Performance -> Advanced -> Virtual Memory
仮想メモリのサイズをシステム全体に制限する設定が存在することがわかりました。私は、仮想メモリが事実上無限であること、あるいはより正確には32ビットXP上の各プロセスで4 GBと想像していました。私はこの限界に近づいていませんでした。しかし、私の仮想メモリ空間は... 0MBに制限されていました。誰もが何をしてもクールではない。
これを変更して最小限の1024 MBと最大4096 MBの仮想メモリを割り当てました。 プロセスエクスプローラに「仮想サイズ」の列を追加しました。 「System Commit」グラフは、物理RAMスティックで使用できる量より多くのメモリを使用していることを示しています。
これは私の問題を解決しました。残念なことに、私のシステムは、メモリをページングしようとするたびに、ほぼ停止するようになりますが、クラッシュよりも優れています。私は並列ビルドを再び有効にしました。私はRAMを残している間に並列化して多くのCPUを使用します(これはほとんどのファイルに当てはまります)。そして、RAMがなくなったらCPU使用量の1%に落ちます。これらのファイルが完了すると、速度が復元されます。
おそらくそれは競合状態のビルド相当品でしょうか?
http://blogs.msdn.com/b/msbuild/archive/2007/04/26/building-projects-in-parallel.aspx
ビルドの一部である別のプロジェクト(ProjectReferenceタグではない)の出力に依存するために通常のReferenceタグを使用している場合、プロジェクトXの前に通常プロジェクトXが完了する状況が発生する可能性があります出力)、時には並行して構築されることもあります。その場合、Yが検索するとXの出力が存在せず、Yが失敗します。 MSBuildがそのような状況でどのようなエラー出力を出すかについては何も知ることができません(そして今すぐテストする方法はまだありません)。そうでないかもしれません。
まだ成果の矛盾(しばしば成功する、時には失敗する)は、私のようなものが原因である可能性が高いと思うようになります。