Как отлаживать или устанавливать оператор break внутри скомпилированного дерева выражений?

Если внешняя библиотека содержит провайдер LINQ и выдает исключение при выполнении дерева динамических выражений, как я могу прервать работу при выдаче этого выражения?

Например, я использую сторонний поставщик LINQ2CRM, который позволяет мне вызывать метод Max()для IQueryable, но когда он выдает InvalidCastException, я не могу сломаться на месте, когда возникает исключение, что затрудняет просмотр трассировки стека, потому что она уже раскручена, когда отладчик прерывает ее в моем коде. Я установил «перерыв при броске» для упомянутого исключения. Мои настройки отладки:

enter image description here


Уточнение, где именно я хотел бы сломаться. Я не хочупрерывать выражение LINQ, но вместо этого я хочу прервать выполнение дерева выражений, или, другими словами, когда метод расширения IQueryableMax()вызывает переопределение, предоставляемое поставщиком LINQ. Верхняя часть трассировки стека выглядит так, и именно туда я хотел бы проникнуть внутрь (или пройти через нее или что-то еще):

at XrmLinq.QueryProviderBase.Execute[T](Expression expression)
at System.Linq.Queryable.Max[TSource,TResult](IQueryable`1 source, Expression`1 selector)
12
задан Abel 14 June 2012 в 09:36
поделиться