C#4.0编译器崩溃
此代码示例不能被编译。 任何工作在那里?
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { using church = Func<dynamic, dynamic, dynamic>; class Program { static void Main(string[] args) { church True = (a, b) => a; church False = (a, b) => b; Func<church, church, church> And = (x, y) => x(y(True, False), False); } } }
错误6内部编译器错误 (地址5476A4CC 0xc0000005):可能的罪魁祸首是'EMITIL'。 编译器发生内部错误。 要解决此问题,请尝试简化或更改下面列出的位置附近的程序。 列表顶部的位置更接近发生内部错误的位置。 像这样的错误可以通过使用/ errorreport选项报告给Microsoft。 TestApplication
我使用VS2010(WinXP 64)重现了崩溃。
两种解决方法:
1.不要使用using
别名
下面的代码在VS2010上干净地编译:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Func<dynamic, dynamic, dynamic> True = (a, b) => a; Func<dynamic, dynamic, dynamic> False = (a, b) => b; Func<Func<dynamic, dynamic, dynamic>, Func<dynamic, dynamic, dynamic>, Func<dynamic, dynamic, dynamic> > And = (x, y) => x(y(True, False), False); } } }
2.使用单声道编译器
Mono 2.10编译器(dmcs)没有问题。
[mono] /tmp @ dmcs test.cs test.cs(18,42): warning CS0219: The variable `And' is assigned but its value is never used Compilation succeeded - 1 warning(s) [mono] /tmp @ ./test.exe [mono] /tmp @
这是在linux上testing的。
- 您可以在Windows .NET上运行使用mono创build的二进制文件。
- 单声道编译器带有一个安装程序MSI,并在Windows上运行。
显然这是一个编译器错误。
我向我们的testing人员提到了这一点,他说:
我很高兴地报告,这已经被修复,你会看到在下一个版本的VS.这个修复。 实际上,您也可以在Visual Studio的BUILD开发人员预览版中看到它已经修复!
抱歉的错误,并感谢把这个引起我们的注意。
编辑:我现在设法重现它,我有一个潜在的解决方法。
这工作:
csc Test.cs
这不:
csc /debug+ Test.cs
所以看起来这是debugging信息的问题。 如果你可以在你的特定情况下没有这样的生活,你很好走…
编辑:我刚才testing,这发生在/debug:pdbonly
以及…
编辑:以防万一有人想知道,我会ping艾利克·利波特关于这一点。
编辑:这是现在最小的repro我发现:
using church = System.Func<dynamic>; class Program { static void Main() {} }
这是另一个解决方法:不要使用Func
,使用一个很好的旧委托types。
public delegate dynamic Church(dynamic x, dynamic y); class Program { static void Main(string[] args) { Church True = (a, b) => a; Church False = (a, b) => b; Func<Church, Church, Church> And = (x, y) => x(y(True, False), False); } }
这也有好处,教会被定义在任何地方,而不仅仅是作为每个文件使用别名。
- Eclipse继续崩溃
- 有谁能告诉我有关Tomcat崩溃时生成的hs_err_pid.log文件的详细信息吗?
- Java ProcessBuilder:结果进程挂起
- C#:“types'System.InvalidOperationException'的第一个机会exception”
- bootsrap导航栏collapsable不能使其工作
- 设备上的iOS应用程序崩溃,dyld:Library未加载,Xcode 6 Beta
- Android Studio折叠定义和方法
- ViewController的respondsToSelector:消息发送到解除分配的实例(CRASH)
- 用于折叠/展开方法的NetBeans快捷键