在VS2015中构建项目:"csc.exe"代码退出 -1073741571



我正在使用Visual Studio 2013。昨天,我安装了VS2015(企业更新3)。对于其中一个项目,我的解决方案的生成过程在VS2015中崩溃。VS2017 RC也会出现同样的异常。该解决方案在VS2013中成功构建。

解决方案是针对 .Net4.5. 当我迁移到 .Net4.6.2,它不能解决这个问题。

我相信VS2015 +中包含的编译器出现了问题

输出:

进程由于 StackOverflowException 而终止。

C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.CSharp.Core.targets(67,5):错误 MSB6006:"csc.exe"退出,代码为 -1073741571。

Msbuild 命令:

C:Program Files (x86)MSBuild14.0bincsc.exe 
  /noconfig 
  /nowarn:1591,1701,1702,2008 
  /nostdlib+ 
  /errorreport:prompt 
  /warn:4 
  /define:TRACE;DEBUG;DOMAIN_IMPL 
  /errorendlocation 
  /preferreduilang:en-US 
  /highentropyva+ 
  /reference:[...] 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.ComponentModel.Composition.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.ComponentModel.DataAnnotations.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Configuration.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Core.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Data.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Net.Http.dll"  
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Net.Http.WebRequest.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Runtime.Serialization.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Xml.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Xml.Linq.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Collections.Concurrent.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Collections.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.ComponentModel.Annotations.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.ComponentModel.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.ComponentModel.EventBasedAsync.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Diagnostics.Contracts.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Diagnostics.Debug.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Diagnostics.Tools.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Diagnostics.Tracing.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Dynamic.Runtime.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Globalization.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.IO.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Linq.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Linq.Expressions.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Linq.Parallel.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Linq.Queryable.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Net.NetworkInformation.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Net.Primitives.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Net.Requests.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Net.WebHeaderCollection.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.ObjectModel.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Reflection.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Reflection.Emit.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Reflection.Emit.ILGeneration.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Reflection.Emit.Lightweight.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Reflection.Extensions.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Reflection.Primitives.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Resources.ResourceManager.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Runtime.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Runtime.Extensions.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Runtime.Handles.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Runtime.InteropServices.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Runtime.InteropServices.WindowsRuntime.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Runtime.Numerics.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Runtime.Serialization.Json.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Runtime.Serialization.Primitives.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Runtime.Serialization.Xml.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Security.Principal.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.ServiceModel.Duplex.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.ServiceModel.Http.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.ServiceModel.NetTcp.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.ServiceModel.Primitives.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.ServiceModel.Security.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Text.Encoding.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Text.Encoding.Extensions.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Text.RegularExpressions.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Threading.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Threading.Tasks.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Threading.Tasks.Parallel.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Threading.Timer.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Xml.ReaderWriter.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Xml.XDocument.dll" 
  /reference:"C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2FacadesSystem.Xml.XmlSerializer.dll" 
  /debug- 
  /filealign:512 
  /optimize- 
  /out:objDebugEA4T.SteadyBear.Domain.dll 
  /ruleset:"C:Program Files (x86)Microsoft Visual Studio 14.0Team ToolsStatic Analysis Tools\Rule SetsAllRules.ruleset" 
  /subsystemversion:6.00 
  /resource:[...] 
  /target:library 
  /utf8output [...].cs "C:UsersUSERNAMEAppDataLocalTemp.NETFramework,Version=v4.6.2.AssemblyAttributes.cs" objDebug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs objDebug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs objDebug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs

使用 windbg 调试 csc 时,会发生以下情况: http://pastebin.com/d8AiaSgh.一切都落入许多Microsoft_CodeAnalysis_CSharp_ni框架中。请注意,在项目设置中禁用代码分析。

当项目包含 1024+ 流畅链式调用时,会出现此问题。

在下面的示例中,如果在 foo 上调用 FluentMethod() 超过 1024 次,编译器将崩溃。

var foo= new Foo();
var result = foo
.FluentMethod()
.FluentMethod()
...;

有效的解决方法是将流畅的呼叫分成更小的组:

var temp = foo.FluentMethod().FluentMethod();
var result = temp.FluentMethod().FluentMethod();

编译器 github 上有一个关于这个问题的问题

这里的问题是系统的内存使用量。

StandardCollector.Service.exe的提交大小为74GB,因此它窥探了系统的所有内存以及更多内存。杀死它后,内存被释放,Jenkins 中的构建没有错误地完成。

如果您安装并启用了代码协定,请转到有问题项目属性中的"代码协定"选项卡,然后取消选中"将合同发送到 XML doc 文件"。

最新更新