Поведение Visual Studio при редактировании во время сборки - PullRequest
0 голосов
/ 31 января 2020

В Visual Studio 2017 (15.9.16) я могу продолжить редактирование исходных файлов после того, как я начал сборку с помощью команды Отладка> Начать отладку (F5). Хотя я специально спрашиваю это для компилятора C#, было бы также интересно узнать, ведет ли себя C ++ по-разному.

Когда я редактирую, когда отладчик подключен, а редактирование и продолжение включены, затем правки подчеркнуты волнистым пурпуром, и все ясно.

Когда я редактирую до прикрепления отладчика, и мои правки сохраняются до того, как сборка завершается успешно, все это кажется в подвешенном состоянии. Либо мое редактирование было слишком поздним, и отладчик выполняет созданный код (не очевидно, за исключением пустых маркеров точек останова, если таковые имеются). Или это было своевременно и включено.

Где находится точка на временной шкале сборки, когда решено, будет ли включено недавнее редактирование? По метке времени сборка началась? Неопределенный? Непосредственно перед обработкой исходного файла компилятором? Проверяет ли компоновщик, был ли объект создан из источника, который изменился после его запуска?

1 Ответ

1 голос
/ 06 февраля 2020

Поведение Visual Studio при редактировании во время сборки

Столкнувшись с таким поведением, проекты C# и C ++ показывают два разных проявления :

Для проекта c# фактически, когда вы проверяете опцию Enable Edit and Contniue, изменения кода будут применены в отладчике, только когда вы вернете стрелку выполнения точки останова к изменению часть. Но изменения помещаются во временную библиотеку, только для целей отладки, и не встраиваются в выходной путь (obj и bin). Включайте это только в том случае, если вы запускаете сборку при прерывании и отладке снова. Это механизм C#.

И это противоположно проекту C ++.

Для C ++ проектов, когда вы перемещаете курсор на измененную часть Проект c ++ запускает задачу сборки для перекомпиляции проекта, который будет включать эти изменения напрямую. Это время, которое включает измененную часть в процесс сборки.

сколько времени в процессе сборки вы можете сохранять изменения в исходных файлах, чтобы их последняя версия все еще была включена в вывод текущей сборки?

Для C ++ проектов. После перемещения курсора на измененную деталь, чтобы вызвать задачу восстановления, измененная деталь постоянно включается в файл сборки. Во время этого процесса вам не нужно строить свой проект заново.

Если вы отлаживаете проект C#, когда вы перемещаете курсор в измененную часть, это не вызывает автоматическую задачу сборки c, поэтому эта часть не включается автоматически в выходном файле, но только в текущей фазе отладки.

Поэтому, когда вы завершаете sh процесс отладки crrent, а затем снова запускаете debug , который запустит процесс сборки или непосредственно нажмет кнопку build , чтобы эти изменения могли быть постоянно включенным в файл сборки.

В целом , когда вы нажимаете кнопку отладки, процесс сборки будет запущен автоматически, так что вы сможете отладить позже. После запуска сборки эти части постоянно включаются в файл сборки.

И все это можно увидеть в окне «Вывод».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...