Visual Studio 2017 С#, отладка асинхронного кода, не видны локальные переменные

У меня есть решение, состоящее из 2 проектов (бизнес-логика и тесты). Я запускаю тест в режиме отладки, чтобы проверить, что не так с бизнес-логикой. Проблема в том, что когда я выполняю асинхронный метод в бизнес-логике, я не вижу местных жителей. Visual Studio 2017 С#, отладка асинхронного кода, не видны локальные переменные

Visual Studio 2017 С#, отладка асинхронного кода, не видны локальные переменные

Но если я создам тот же метод в своем тестовом классе, он будет работать правильно. Так что не так с наступлением тщательного асинкового метода в упоминании проекта?

Вот мой тестовый код Visual Studio 2017 С#, отладка асинхронного кода, не видны локальные переменные

Я не думаю, что переменные автоматически захватываются сгенерированным классом если они не используются через ожидания. Попробуйте добавить этот оператор после ожидания: GC.KeepAlive(myVar);

Lasse V. Karlsen 28.05.2019 11:05

Разве вы не должны прерваться на строке 53? 52 — это место, где объявляется myVar. Так что не удивлюсь, если его там нет.

Vanice 28.05.2019 11:08

Что сказал @Vanice, если вы находитесь в строке 52, переменная НЕ была создана, вы должны пройти как минимум на 1 строку вниз, чтобы увидеть эту переменную в режиме отладки.

Camadas 28.05.2019 11:17

Вы получите ту же ошибку в обычном методе. Эта строка еще не выполнена, поэтому в области видимости нет переменной myVar.

Panagiotis Kanavos 28.05.2019 11:32

Работает нормально, когда я пробую это в VS2017. Обязательно обновляйте VS, в ранних выпусках было много ошибок.

Hans Passant 28.05.2019 13:08
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
5
267
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Проблема в том, что вы устанавливаете точку останова в строке 52. Когда программа достигает этой строки, она останавливается, но он его не выполняет. Так вот, myVar там не объявлено. После запуска строки 52 он будет объявлен и будет виден. Установите точку останова в строке 53.

Ответ принят как подходящий

большое спасибо. Но виновником в моем случае был ILMerge (в проекте BusinessLogic), о котором я забыл, как только я удалил, все работает нормально!

Другие вопросы по теме