【发布时间】:2016-03-09 05:03:00
【问题描述】:
我刚刚升级到 VS2015.1,在尝试编译我的一个项目时遇到了编译器崩溃。如果您将以下 repo 代码放在控制台应用程序中(并添加对 moq.dll 的引用),第 12 行中的代码会使我的编译器崩溃。这似乎发生在 Roslyn lamdba 重写调用期间。
using System.Collections.Generic;
using System.Linq;
using Moq;
namespace RoslynError
{
class Program
{
static void Main(string[] args)
{
var mockRepo = new MockRepository(MockBehavior.Strict);
var obj = mockRepo.OneOf<DTO>(x => x.Value == (OptionEnum?)null);
}
}
class DTO
{
public DTO(OptionEnum? enumVal)
{
Value = enumVal;
}
public OptionEnum? Value;
}
enum OptionEnum
{
NotSpecified
}
}
有人知道为什么会发生崩溃吗?
【问题讨论】:
-
对起订量的引用几乎不相关。我认为重要的是 lambda 箭头将被转换为表达式树(
Expression<Func<DTO, bool>>类型),而不是简单的委托实例(Func<DTO, bool>类型)。
标签: c# lambda crash visual-studio-2015 roslyn