子节点“2”异常退出

16

我最近将我的Windows 8.1应用程序重新定位到Windows 10。在构建UI项目时,我遇到了此错误:

"MSBUILD : error MSB4166: Child node "2" exited prematurely. Shutting down. Diagnostic information may be found in files in the temporary files directory named MSBuild_*.failure.txt."

这并不特别有用,所以我去了%temp%,寻找所说的故障日志,但是它不存在。我是否正在错误的“temp”目录中寻找?

是什么导致了这个错误?我可以在没有此错误的情况下构建我的支持库项目。

11个回答

6

我尝试重新启动Windows解决了这个问题。 对于像这样的奇怪错误,这总是值得一试。


我真不敢相信,在尝试了很多方法之后,它终于解决了。重新启动 VS 也没有帮助。 - Gaspa79

5

所以,我手动进行了处理。我最终创建了一个新项目,并逐个移动源文件。在移动完某些内容后,检查项目以确保它仍然可以构建。

结果发现,在我的App.xaml中存在导致其崩溃的代码行:

<ResourceDictionary Source="Assets/Resources/LayoutTemplates.xaml" p8:Name="LayoutTemplates" xmlns:p8="http://schemas.microsoft.com/winfx/2006/xaml" />

去掉命名空间和“Name”属性就解决了问题。

相当晦涩难懂吧...


2
在我的情况下,我只是将MSBuild平台从“自动”改为“X86”,就可以工作了。 - Rogerson Nazário

2

我修复了.NET Framework(控制面板 -> 程序和功能 -> 修复),因为我的假设是MSBuild所需的一个dll文件已经损坏。现在它可以正常工作,但我不知道这是随机发生的还是一切都很好。


1
在我的情况下,将UWP项目设置中的“目标版本”更改为最新版本(在我的情况下是Windows 11)可以解决问题。

在我的情况下,我切换到了UWP SDK的下一个版本,它只是指出了一个编程错误:导入了一个根本没有被使用的"using"。我相信指出SDK版本也指出了要使用的编译器,因此版本越新,编译器就越好,错误就越少。请记住,UWP一直是一个猫盒子,其中"通用错误"总是出现,对于许多事情没有太多细节。直到最近,它才开始变得更加清晰和完整。然后它死了! - Rodrigo T.

0

我遇到了同样的错误。在我的情况下,MSBuild failure.txt文件存在,并列出了这个错误:

System.IO.FileLoadException: Could not load file or assembly 'System.Numerics.Vectors, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

尝试了上述一些选项后,我发现 Npgsql 程序集在 GAC 中安装失败。卸载 Npgsql 似乎解决了这个问题。因此,如果上述选项都没有帮助,也许可以检查最近安装到 GAC 中的任何内容。

0
对我来说,错误是在我设置了Windows Server 2012 R2的构建环境后出现的。
我在同一工作区并行运行多个MSBuild实例。按顺序或在不同的工作区运行MSBuild实例可以解决这个问题。
鉴于其他答案,我认为错误信息是“某些东西出了大问题并且崩溃得非常严重”。如果你问我,那就是MSBuild的健壮性bug。

0
在我的情况下,重新启动 VS 2019 解决了这个问题。

0
对我来说,问题是我添加了一个对.NET Framework库的引用。日志文件中没有任何诊断信息,并且在构建时Visual Studio会崩溃。删除该引用后,一切都恢复正常了。

0

自从2016年11月11日开始,我们的C++项目出现了这些错误。检查了Windows更新后,发现在早上安装了以下适用于Windows 10的Microsoft更新:

Update for Windows 10 Version 1511 for x64-based Systems (KB3150513)
https://support.microsoft.com/en-us/kb/3150513

Windows Malicious Software Removal Tool for Windows 8, 8.1, 10 and Windows Server 2012, 2012 R2, 2016 x64 Edition - November 2016 (KB890830)
https://support.microsoft.com/en-us/kb/890830

Cumulative Update for Windows 10 Version 1511 for x64-based Systems (KB3198586)
https://support.microsoft.com/en-us/kb/3198586

Security Update for Adobe Flash Player for Windows 10 Version 1511 (for x64-based Systems) (KB3202790)
https://support.microsoft.com/en-us/kb/3202790

Security Update for Adobe Flash Player for Windows 10 Version 1511 (for x64-based Systems) (KB3201860)
https://support.microsoft.com/en-us/kb/3201860

禁用多处理器编译/MP(在项目设置中的C/C++,常规下)似乎可以避免这个问题。
记录一下:发生在使用incredibuild 7.22时。没有测试过是否在没有incredibuild的情况下也会出现这个问题。

我是IncrediBuild的员工,据我们所知,在IncrediBuild 7.22中没有其他客户投诉此问题的发生。如果这个问题似乎与IncrediBuild有关,请联系support@incredibuild.com,以便我们可以检查并在此帖子中发布适当的答案。 - Dori
嗨@Dori,我使用incredibuild 7.22时遇到了同样的问题,但只是在更新到Visual Studio 2015 Update 3之后。不确定这是否是incredibuild或msbuild的问题。无论如何,我创建了一个工单:http://xoreax.helpserve.com/Default/Tickets/Ticket/View/JJC-327-23799 - Nino
这种情况发生在我的Incredibuild 7.3(build 1795)中。我认为错误是由于竞争条件引起的,其中某些预期的内容尚未准备好。这是一个大型项目,我猜测它发生在预处理器中。通常经过3或4次重试后,它最终会完成。 - ChocoBilly

0
在我的情况下,我使用了SlowCheetah,在其中为所有“Content”项设置了默认转换:
<Content>
  <TransformOnBuild>true</TransformOnBuild>
  <Link></Link>
  <CopyToOutputDirectory></CopyToOutputDirectory>
</Content>

这导致构建需要更多的内存(如1.7GB),最终抛出“子节点”消息。 在重启Windows后,我的VS 2019只是关闭了,而不是在每次构建时出现错误。将内容转换设置为false解决了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接