Я отлаживаю приложение .NET 4.0 в Visual Studio 2015. Мое приложение создается и работает нормально, но когда я пытаюсь отредактировать и продолжить работу под отладчиком, независимо от того, какие изменения я делаю или где я их делаю в своем основном проекте , я получаю диалоговое окно, в котором говорится:
Внесены правки, которые не могут быть скомпилированы. Выполнение не может продолжаться до тех пор, пока ошибки компилятора не будут исправлены.
В качестве примера изменения, о котором я говорю, я пытался добавить эту строку различными способами:
Console.WriteLine("foo");
Когда я смотрю на панель списка ошибок Visual Studio, я вижу только одну ошибку, CS7038, с описанием «Не удалось создать модуль '<my app name>
'». Имя файла, номер строки или символ не указаны. В моем коде нет волнистых красных подчеркиваний. Если я остановлю работающее приложение, соберу его с изменениями и снова запущу, все будет строиться и работать нормально. Таким образом, кажется, есть некоторое несоответствие между тем, что компилятор времени сборки и компилятор редактирования и продолжения считают приемлемым.
Кто-нибудь знает способ получить больше информации о том, почему компиляция завершается сбоем в режиме редактирования и продолжения? Я читал кое-что о подключении и отладке процесса VBCSCompiler, поэтому я попробовал это, но даже со всеми типами исключений, настроенными на прерывание при запуске, подключенный VS никогда не ломался.
Я не делюсь каким-либо кодом, потому что это вопрос не о моем коде, а скорее о стратегиях выяснения того, что компилятор Edit and Continue считает неправильным, и, насколько я знаю, источник ошибки компилятора может быть где угодно в моем весь проект.
Изменить:
Как уже упоминалось в комментариях, я смог подключить отладчик к Visual Studio и прервать работу, когда было выдано исключение при нажатии «Продолжить» после редактирования кода. Исключением был System.NotSupportedException
со следующим сообщением: «Изменение версии ссылки на сборку не разрешено во время отладки». В нем было указано имя рассматриваемой сборки, которая представляла собой небольшой проект VB.Net, используемый моим приложением, которое в основном написано на C#. Я пытаюсь создать MCVE для отправки в Microsoft, но в настоящее время я не могу воспроизвести проблему в меньшем решении только с одним проектом VB и одним проектом C#.
Редактировать 2:
Я нашел обходной путь и сам ответил на вопрос на случай, если кто-нибудь еще столкнется с этой странной проблемой, но я оставляю галочку «Отвечено» для всех, кто может объяснить, что происходит (почему компилятор считает, что номер версии указанный проект был изменен во время редактирования).