私はVS2015.1にアップグレードしたばかりで、私のプロジェクトをコンパイルしようとするとコンパイラがクラッシュしました。次のレポコードをコンソールアプリケーションに入れて(そしてmoq.dllへの参照を追加すると)12行目のコードがコンパイラにクラッシュします。それはRoslyn lamdbaの書き換え呼び出しの間に起こるようです。このラムダを書き直そうとすると、なぜRoslynがクラッシュするのですか? (Visual Studio 2015 update 1)
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
}
}
誰でもクラッシュが発生する理由を知っていますか?
using System;
using System.Linq.Expressions;
namespace Bug461
{
class Program
{
enum Test { }
static void Main()
{
Expression<Func<Test?, bool>> x = t => t == (Test?)null;
}
}
}
編集:
部品番号への参照がほとんど関連性がある:私は提案した修正とプル要求を行いました。重要なことは、ラムダの矢印が単純なデリゲートのインスタンス( 'Func')のものではなく、(式>の)式ツリーに変換されるということです。 –