我正在使用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 文件"。