Существует ли путь к *полностью*, отключают Редактирование и Продолжаются?

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

Я могу выключить Редактирование и Продолжить путем движения в Инструменты> Опции> Отладка> Редактирование и Продолжаться, и затем снятие выделения с флажком 'Enabled Edit and Continue'. Это не полностью блокирует код, как бы то ни было. Это действительно предотвращает любые редактирования в коде от того, чтобы быть выполняемым в текущем выполнении, но это не предотвращает щелчки мышью или нажатия клавиш от фактического изменения кода.

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

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

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

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

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

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

Заранее спасибо за любую справку или идеи...

Mike

10
задан Community 23 May 2017 в 12:00
поделиться

3 ответа

В Python каждая последовательность содержит пустую последовательность.

answer = input("Enter 'Y[es] or N[o]:")
if answer in 'YyNn':        # verify input
    process(answer) 

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

>>> "ABCDEFGHIJ".__contains__("")
True

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

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

-121--1760393-

Что-то подобное будет работать - добавьте любые другие ключевые слова SQL, которые вы хотите проанализировать:

function sql_format($query) {
  $keywords = array("select", "from", "where", "order by", "group by", "insert into", "update");
  foreach ($keywords as $keyword) {
    if (preg_match("/($keyword *)/i", $query, $matches)) {
      $query = str_replace($matches[1], "\n" . strtoupper($matches[1]) . "\n  ", $query);
    }
  }
  return $query;
}
-121--3431292-

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

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

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

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

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

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

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

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

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

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

3
ответ дан 4 December 2019 в 00:24
поделиться

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

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

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

удачи!

Адам

4
ответ дан 4 December 2019 в 00:24
поделиться

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

  • Откройте свойства исполняемой сборки
  • Перейдите во вкладку Debug
  • Установите флажок Enable unmanaged code debugging

Code documents should stay locked, even when a breakpoint is hit, и любая попытка изменить его должна вызывать всплывающее окно со словами "Изменения не разрешены, когда неуправляемая отладка разрешена".

5
ответ дан 4 December 2019 в 00:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: