Подтвердить что ты не робот

Запретить использование метода DebuggerStepThroughAttribute для моего неполного класса, не связанного с xsd?

Я использовал инструмент xsd.exe для создания класса на основе моей схемы xml. Он создал открытый частичный класс с DebuggerStepThroughAttribute. Ну, я создал еще один файл с частичным классом для этого класса, чтобы написать свой собственный код и хочу, чтобы он мог входить в этот код, который я написал, но кажется, что отладчик применяет пошаговый атрибут к my частичный класс. Есть ли простой способ для меня войти в мой код без ручного удаления атрибута каждый раз, когда я повторно генерирую частичный класс?

4b9b3361

Ответ 1

  • Вы можете заставить отладчик игнорировать этот атрибут в разделе Инструменты- > Параметры- > Отладчик- > Общие. Снимите флажок "Включить только мой код (только управляемый)".
  • Вы также можете просто использовать частичный класс в качестве оболочки для другого класса/методов. Методы в частичном классе будут просто заглушками, которые вызывают фактические методы в новом классе. Отладчик пропустит метод, украшенный атрибутом, но все же позволит вам пройти через класс, который они переносят. Пример ниже...

//

[DebuggerStepThrough]
static void DebuggerStepThroughInPartialClass()
{
   WrappedClass.NonDebuggerStepThrough();
}

class WrappedClass{
   static void NonDebuggerStepThroughInNewClass()
   {
      int bar = 0;
      bar++;
   }
}

Ответ 2

Лучший способ - просто удалить строки атрибутов из сгенерированного кода. Самый простой способ ИМХО использует псевдоним в окне команд.

Пример:

1) Откройте командное окно (CTRL + A)

2) тип: (версия VB)

alias removenodebug Edit.Replace "(?([^\r\n])\s)*System.Diagnostics.DebuggerStepThroughAttribute\(\),\s*_\r\n(?([^\r\n])\s)*" "" /d /regex /all

3) теперь у вас есть псевдоним, чтобы найти и заменить эти строки в текущем документе. Вы можете просто ввести командное окно:

removenodebug

И линии атрибутов исчезли.

Примечание. Регулярное выражение, используемое в этом примере, предназначено для кода VB, но его не следует слишком сложно преобразовать для С#.