在C#项目的调试版本(目标.Net Framework 4.7.2)中,我被怪异的行为所困扰。
var wHasOvernightShifts = this.ScheduleSegments.Any(
x => x.SegmentTypeId == eSegmentType.Schedule
&& !x.IsDeleted
&& x.ShiftDate == pShiftDate
&& x.StartTime.Value.DayOfWeek != x.FinishTime.Value.DayOfWeek);
我知道这是错误的答案。当我在Quick Watch中评估RHS(在同一点使用相同数据)时,相同的代码返回true。向后退调试器并重新执行该语句,再次返回false。 (注:所有引用的属性都没有副作用)。
如果我执行清理并重建,则所有操作均会按预期进行。请注意,仅靠重建本身是不够的。
在第2种情况下,执行清理/重建后,该方法将返回一个非空集合,并且内部的断点会起作用,就像步入一样。
似乎编译器的增量部分已损坏,或者执行环境只是忘记了模块已加载。
还有其他人遇到过类似的问题吗?是否有一个简单的解决方案(除了清理/重建)?
n.b。为了解决此问题,我已关闭“启用我的代码”并打开“要求源文件必须与原始版本完全匹配”。
答案 0 :(得分:1)
自从我更新项目以来已经过去了几周,以确保每个配置都构建在一个单独的目录中。问题似乎已经消失了。
我很确定这是解决问题的方法。