Изменения в поведении отладчика между vs2008 и vs2010 - PullRequest
1 голос
/ 15 августа 2011

Я борюсь с поведенческими различиями между Visual Studio 2008 и 2010 отладчиком.

В 2008 году с подключенным отладчиком приведенный ниже код не остановится, чтобы показать исключение необработанное в установщике свойств I в объекте a. (Параметр меню: «Отладка / Исключения», «Необработанный пользователь включен» и «Отключено»)

Блок try catch будет перехватывать targetInvocationException, и я могу спокойно его игнорировать (в особом случае, обратите внимание).

Однако в версии 2010 этот код с подключенным отладчиком будет прерываться при неудачной попытке установить значение I. (что раздражает моих коллег, так как я не хочу, чтобы их отладочные программы внезапно прекращались из-за этого).

Насколько я понял, у меня есть возможность применить атрибут "System.Diagnostics.DebuggerNonUserCode" к классу или отключить параметр отладки "Включить только мой код".

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

Может кто-нибудь объяснить мне, почему отключение опции «просто мой код» имеет значение здесь?

Заранее спасибо! ;)

p.s Я также попытался отключить все необработанные параметры отражения в Debug / Exceptions / Common Language Exception, system.Reflections, но, похоже, это никак не отразилось ...

- пример кода -

using System;
using System.Reflection;

class A
{
    public int I { set { throw new Exception("Sorry, no can do"); } }
}

class Program
{
    static void Main()
    {
        PropertyInfo targetMember = typeof(A).GetProperty("I");

        var a = new A();

        try
        {
            targetMember.SetValue(a, 1, null);
        }
        catch (TargetInvocationException)
        {
            // happy to ignore this, lalala
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...