【发布时间】:2013-04-09 12:55:20
【问题描述】:
我试图模拟一个将DateTimeOffset? 作为其参数之一的接口。突然之间,Visual Studio 开始报告“内部编译器错误”并且它已经“停止工作”。经过大量的尝试,我开始一个一个地删除文件,然后逐行代码。这简化为下面的代码,它重现了这个错误:
public class testClass
{
public interface ITest
{
void Test(DateTimeOffset? date);
}
public void test2()
{
var mock = new Mock<ITest>();
mock.Setup(x => x.Test(new DateTime(2012, 1, 1)));
}
}
问题似乎出在这条线上:
mock.Setup(x => x.Test(new DateTime(2012, 1, 1)));
如果我评论它,编译器工作正常。另外,问题是我正在设置一个new DateTime(),它适合DateTimeOffset。
这是Moq 或VS2012 中的错误吗?以前有人遇到过这个错误吗?
更新
以下代码示例也会导致编译错误,无论是使用常规 Visual Studio 2012 编译器还是使用 Roslyn CTP 2012 年 9 月:
using System;
using System.Linq.Expressions;
public interface ITest
{
void Test(DateTimeOffset? date);
}
public class TestClass
{
Expression<Action<ITest>> t = x => x.Test(new DateTime(2012, 1, 1));
}
错误:
1>CSC:错误 CS0583:内部编译器错误(地址为 0xc0000005 00D77AFB):可能的罪魁祸首是“BIND”。
此代码与起订量无关。
【问题讨论】:
-
运行时出现内部编译器错误?还是在编译时?
-
@WouterdeKort 当我尝试构建解决方案时。
-
好的。我可以重现这个问题。这确实是一个奇怪的错误。拆分 DateTimeOffset 的定义和对模拟的分配不会导致编译错误。
-
@WouterdeKort 是的,这解决了问题 - 但实际上发现那条线是问题所在,真是令人头疼!你认为这是一个应该报告的 VS 错误吗?
-
我已在推特上发布此链接并将其发送给 Eric Lippert。我希望他能看看。否则,您可以在 Microsoft Connect 上将其报告为错误。
标签: c# visual-studio visual-studio-2012 compiler-errors roslyn