Есть ли способ * полностью * отключить Редактировать и продолжить? - PullRequest
10 голосов
/ 12 января 2010

Мне было интересно, есть ли способ полностью заблокировать мой код во время его отладки в Visual Studio 2008. Документы кода автоматически блокируются при запуске в качестве 64-битных приложений, что я очень предпочитаю; тем не менее, я делаю большую часть своих надстроек для создания кода для Excel, который является 32-битным В результате, несмотря на то, что я нацеливаюсь на AnyCPU, хост VS знает, что он работает в 32-битном процессе, и, следовательно, исходный код не заблокирован, в то время как код работает, размещенный в Visual Studio. .

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

Опять же, при работе с 64-битными приложениями этого не происходит - код полностью заблокирован. Я предпочитаю, чтобы код был полностью заблокирован, по крайней мере, по нескольким причинам:

  1. Я могу случайно нажать клавишу или что-то подобное во время отладки, что я определенно не хочу делать. Это редко, но это проблема.

  2. Многие из моих автоматических тестов управляют пользовательским интерфейсом через SendKeys. Однако, проходя такой тест с использованием отладчика, я иногда могу забыть, что некоторые из аспектов связаны с SendKeys, что означает, что нажатия клавиш в конечном итоге отправляются в Visual Studio IDE вместо Excel.

В выпуске № 2, выше, модульное тестирование не проходит, и это нормально - плохо, но отправка всех нажатий клавиш в модуль кода и уничтожение моего кода совершенно неприемлемы.

У кого-нибудь есть здесь идеи? Можно ли полностью заблокировать код при запуске в Visual Studio при компиляции на 32-битном процессоре?

Некоторые похожие посты по этому вопросу, но ни один из которых не имеет прямого отношения к этому:

Заранее спасибо за любую помощь или идеи ...

Mike

Ответы [ 3 ]

5 голосов
/ 18 января 2010

Вот трюк, который я использую в Visual Studio 2005 (у меня нет возможности протестировать в Visual Studio 2008, но он должен работать):

  • Открыть свойства исполняемой сборки
  • Перейти на вкладку Отладка
  • Установите флажок Включить отладку неуправляемого кода флажок

Документы кода должны оставаться заблокированными, даже при достижении точки останова, и любая попытка изменить ее должна вызывать всплывающее сообщение: «1015 *« Изменения не допускаются, если включена неуправляемая отладка ».

4 голосов
/ 13 января 2010

Привет - извините, я не могу помочь вам с полной блокировкой вашего кода - у меня есть противоположное желание: полностью разблокировать его во время отладки, но я могу помочь вам с вашей второй проблемой.

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

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

Удачи!

Адам

3 голосов
/ 16 января 2010

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

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

Однако в VS2k8 по умолчанию установка файла только для чтения позволяет редактировать файл. Сначала необходимо отключить параметр «Разрешить редактирование файлов только для чтения ...» в меню «Инструменты> Параметры> Среда> Документы».

Во-вторых, вам нужно добавить следующий ключ в реестр как DWORD и установить его значение в 1:

HKCU\Sofware\Microsoft\Visual Studio\9.0\Source Control\UncontrolledInMemoryEditDialogSuppressed  

Это все еще не будет работать полностью. Затем вам нужно установить для Source Control для этого проекта значение Visual Source Safe. (<- это шаг, который, я полагаю, вам не понравится.) </p>

Затем перезапустите VS2k8.

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

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

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

...