Предупреждение об устаревшем коде при изменении и продолжении в Visual Studio 2012 Express

В большинстве моих проектов в режиме отладки, если я вижу небольшую ошибку, я могу отредактировать код во время отладки, выбрать применить изменения кода и продолжить.

Обычно это работает для большинства незначительных изменений. Если изменения слишком обширны, это будет означать, что в памяти модуля недостаточно места, или если изменения изменяют блок try-catch, это испортит раскрутку стека, поэтому в этих особых случаях требуется перестроение и перезапуск. Но почти все остальное можно редактировать и продолжать.

Но для этого одного проекта каждое небольшое изменение, каким бы незначительным оно ни было, я получаю сообщение «Исходный файл отличается от того, когда модуль был собран. Вы хотите, чтобы отладчик все равно использовал его». И если я выберу «да», то получу предупреждение о том, что собираюсь использовать устаревший код.

Почему этот единственный проект не может обновить исходный код, чтобы синхронизироваться с редактированием и продолжением изменений? Я что-то ненароком напутал в настройках проекта?

предупреждение об устаревшем источнике предупреждение об устаревшем коде

ОБНОВЛЕНИЕ

Я пробовал каждое решение, представленное здесь и не повезло. Это, очевидно, распространенная проблема, потому что на SO есть много сообщений по этой теме. Но похоже, что ни у кого никогда не было надежного решения, очевидно, VS Edit and Continue довольно темпераментный.

Открыл второй экземпляр VS и загрузил предыдущий проект, в котором я знал, что редактирование и продолжение работают. Я еще раз убедился, что это работает. Затем я поставил свойства проекта рядом и проверил, что все переключатели и настройки абсолютно идентичны. Затем я поставил параметры и настройки VS рядом и проверил, что все настройки абсолютно идентичны. При этом редактируйте и продолжайте работу в одном проекте, а не в другом.


person Josh    schedule 04.08.2016    source источник


Ответы (1)


Очевидно, что редактировать и продолжать несовместимо с COM-объектами, связанными с помощью директивы #import.

Я обнаружил, что только один модуль моего проекта имеет устаревший код при редактировании и продолжении. этот модуль вводит COM-объект ADO с помощью директивы #import.

Написание быстрого класса-оболочки для инкапсуляции материала COM и удержания его в собственном модуле решило мою проблему.

MSDN явно не указывает это в своей документации https://msdn.microsoft.com/en-us/library/0dbey757%28v=vs.110%29.aspx

person Josh    schedule 04.08.2016