У меня есть решение, состоящее из 2 проектов (бизнес-логика и тесты). Я запускаю тест в режиме отладки, чтобы проверить, что не так с бизнес-логикой.
Проблема в том, что когда я выполняю асинхронный метод в бизнес-логике, я не вижу местных жителей.
Но если я создам тот же метод в своем тестовом классе, он будет работать правильно. Так что не так с наступлением тщательного асинкового метода в упоминании проекта?
Разве вы не должны прерваться на строке 53? 52 — это место, где объявляется myVar. Так что не удивлюсь, если его там нет.
Что сказал @Vanice, если вы находитесь в строке 52, переменная НЕ была создана, вы должны пройти как минимум на 1 строку вниз, чтобы увидеть эту переменную в режиме отладки.
Вы получите ту же ошибку в обычном методе. Эта строка еще не выполнена, поэтому в области видимости нет переменной myVar
.
Работает нормально, когда я пробую это в VS2017. Обязательно обновляйте VS, в ранних выпусках было много ошибок.
Проблема в том, что вы устанавливаете точку останова в строке 52. Когда программа достигает этой строки, она останавливается, но он его не выполняет. Так вот, myVar
там не объявлено. После запуска строки 52 он будет объявлен и будет виден. Установите точку останова в строке 53.
большое спасибо. Но виновником в моем случае был ILMerge (в проекте BusinessLogic), о котором я забыл, как только я удалил, все работает нормально!
Я не думаю, что переменные автоматически захватываются сгенерированным классом если они не используются через ожидания. Попробуйте добавить этот оператор после ожидания:
GC.KeepAlive(myVar);