Есть ли способ *полностью* отключить «Редактировать и продолжить»?

StackOverflow https://stackoverflow.com/questions/2050162

Вопрос

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

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

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

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

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

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

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

Некоторые связанные сообщения по этой проблеме, но ни одна из них напрямую не касается этого:

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

Майк

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

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

Другие советы

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

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

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

Привет! Извините, я не могу помочь вам полностью заблокировать ваш код. У меня противоположное желание:чтобы полностью РАЗБЛОКИРОВАТЬ его во время отладки, но я могу помочь вам со второй проблемой.

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

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

Удачи!

Адам

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top