Visual Studio 2017 - Не могу просматривать переменные в режиме отладки - PullRequest
0 голосов
/ 28 февраля 2019

Я уже некоторое время пытаюсь разобраться в этой проблеме.

Я работаю в Visual Studio 2017 и у меня есть много решений, над которыми я работаю.Каждый из них показывает мне переменные и их значения при отладке, кроме одной.Он отлично работает.

Что я сделал:

  • Поиграл с режимом управляемой совместимости
  • Очистить и восстановить и все эти основы
  • Удалите локальное решение и получите его свежим из Git
    • Другие разработчики, работающие над тем же решением, не имеют этой проблемы
  • Пробная отладка решения в VS2015 и VS2019 Preview

Не могу исправить это, есть идеи, что еще я могу попробовать?

Редактировать : Уточнение, я могу пройти по коду при отладке, но яне могу просмотреть значение переменных.

EditEdit : Я проводил некоторое тестирование, и у меня есть новая информация.Хотя одна точка останова, я смотрю на несколько переменных.

  • public ActionResult Detail (Guid? Id)> Я могу просмотреть значение id
  • SomeObject item = someobjectRepository.GetItem (id) .SingleOrDefault ()> Получает элемент, но не можетпросмотреть его переменные
  • Позже в коде foreach (var subitem в item.Subitems)> Я могу просмотреть значения subitem.

EditEditEdit

Переменные, которые не могут быть просмотрены, все устарели.

Для тестирования пустот я удалил все переменные моей модели, поэтому она полностью пустая, а затем инициализировал ее

public MySuperModel()
{
}

Инициализация

MySuperModel model = new MySuperModel();

При просмотре модели при наведении курсора или добавлении в часы / быстрые часы выводится сообщение о том, что оно устарело.

И так далее, это очень странно

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Я нашел решение своей проблемы, хотя я не знаю, почему она работает.

Я постараюсь объяснить.

У меня есть модель, которая содержит IEnumerables.

Модель

public SuperModel()
{
      public IEnumerable<MemberObject> memberList1{get; set;}
      public IEnumerable<MemberObject> memberList2{get; set;}
}

Контроллер

public ActionResult Detail(Guid? id)
{
    //Model initialized
    SuperModel model =  GetTheModel();

    //Then there were 2 foreach loops throu my einumerables
    foreach(var item in model.memberList1)
    {
        //Do things
    }
    foreach(var item in model.memberList2)
    {
        //Do things
    }

}

Это сломало отладчик, если я оставил только 1 изциклы в отладчике работали.

Обходной путь

public ActionResult Detail(Guid? id)
{
    //Model initialized
    SuperModel model =  GetTheModel();

    //Then there were 2 foreach loops throu my einumerables
    model.memberList1.ToList().Foreach((item) => 
    { 
        //Do Things
    });
    model.memberList2.ToList().Foreach((item) => 
    { 
        //Do Things
    });

}

Fin

Я понятия не имею, почему использовать методы .ForEachработает при использовании классического цикла foearch () нет.Но если кто-нибудь столкнется с чем-то подобным, я надеюсь, что это поможет.

0 голосов
/ 28 февраля 2019

снимок экрана - не отображается screenshot - not showing

снимок экрана - отображается screenshot - showing

List<ClassA> list = new List<ClassA>();
ClassA retVal = list.Where(o => o.MyProperty1 == 1).FirstOrDefault();

Здесь не будет исключения (ошибка), retVal равно null , и вы не увидите свойства или значения свойств класса.

Все, что вам нужно сделать, это добавить некоторые элементы в список.

List<ClassA> list = new List<ClassA>();
list.Add(new ClassA() { MyProperty1 = 1, MyProperty2 = 2 }); //adding item
ClassA retVal = list.Where(o => o.MyProperty1 == 1).SingleOrDefault();
...