Ответ 1
Ключом является обеспечение загрузки System.Core.dll. Один простой способ сделать это - иметь следующее в верхней части файла, от которого вы отлаживаете:
#if DEBUG
using System.Diagnostics;
#endif
Я пытаюсь отладить выражение Linq в Visual Studio 2015. Когда я добавляю его в окно просмотра, я получаю следующую ошибку в столбце Value.
поле .DomainValues.Where(d = > d.Active) error CS1061: "Список" не содержит определения "Где" и нет метод расширения 'Where', принимающий первый аргумент типа "Список" можно найти (вы не указали директиву использования или ссылку на сборку?)
Когда я пытаюсь выполнить в окне Immediate, я получаю ту же ошибку.
ошибка CS1061: "Список" не содержит определения для 'Where' и не метод расширения 'Where', принимающий первый аргумент тип "Список" можно найти (если вы не используете директива или ссылка на сборку?)
Я думал, что поддержка была добавлена для этого в Visual STudio 2015 на основе этой статьи - http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/12/support-for-debugging-lambda-expressions-with-visual-studio-2015.aspx
Я нашел эту статью, которая описывает некоторые ограничения, но ни одно из них не относится к моему приложению WPF x86. http://dotnetdeewane.blogspot.com/2015/03/support-for-debugging-lambda.html
Loaded 'C:\WINDOWS\Microsoft.Net\сборка\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll'
Мой метод статический, а не async. У меня есть оператор System.Linq в верхней части моего класса.
using Infragistics.Windows.Editors;
using Microsoft.Practices.ServiceLocation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
public static ValueEditor SelectEditor(ColumnConfig config, TableInfo info, object value = null)
{
//do some stuff
field.FilteredDomainValues = field.DomainValues.Where(d => d.Active).ToList();
//do some other stuff
}
Я не использую динамические типы
У меня также есть Visual Studio 2012 и Visual Studio 2013.
Я использую Resharper.
Что-нибудь еще, что я могу проверить в параметрах VS?
Ключом является обеспечение загрузки System.Core.dll. Один простой способ сделать это - иметь следующее в верхней части файла, от которого вы отлаживаете:
#if DEBUG
using System.Diagnostics;
#endif
У меня была та же проблема, и я исправил ее, сделав вызов Enumerable.Range в коде, прежде чем проверять выражение лямбда в окне просмотра
Я использую Debug > Windows > Immediate Window. Он позволяет мне вводить выражения, которые я использую для отладки и экспериментирования. Он поставляется с полной поддержкой Intellisense.
field.DomainValues
field.DomainValues.Where(d => d.Active)
field.DomainValues.Count(d => d.Active)
field.DomainValues.Where(d => d.Active).First()
Согласно MSDN:
ПРИМЕЧАНИЕ. Лямбда-выражения, которые требуют запуска собственных функций (например, LINQ-to-SQL), не поддерживаются.
Я вижу в вашем примере, что ваши параметры метода имеют тип TableInfo, ColumnConfig, который звучит довольно SQL, связанный со мной. По какой-либо причине поле .DomainValues указывает на БД и использует LINQ-To-SQL для решения?