Что не так с использованием ConfiguredTaskAwaitable из класса PortableClassLibrary в отладчике из MSTest Runner или консольного приложения?

Примечание. Это всего лишь ошибка времени отладки, но очень странная.

Проблема:

При запуске с присоединенным отладчиком и вызовом метода, представленного в отдельной переносимой библиотеке, возвращающего ConfiguredTaskAwaitable, мы получаем InvalidProgramException.

Воспроизвести это:

Имея 2 проекта:

  1. PortableClassLibrary (поддерживает .Net 4.5; Магазин Windows; Windows Phone 8) с 1 классом:

    public class Weird
    {
        public static ConfiguredTaskAwaitable GetConfiguredTaskAwaitable()
        {
            return new ConfiguredTaskAwaitable();
        }
    }
    
  2. ConsoleApplication с кодом:

    static void Main(string[] args)
    {
        Weird.GetConfiguredTaskAwaitable();
    }
    

Примечания:

  1. замена ConfiguredTaskAwaitable на ConfiguredTaskAwaitable<T> (общая версия) устраняет эту странную проблему
  2. использование этого метода из приложения WP8 или Win8 в отладчике работает нормально.

В настоящее время это вызывает проблемы, потому что я не могу запустить свои модульные тесты в отладчике. Я вынужден изменить мою реализацию «ObjectUnderTest» так, чтобы она возвращала общий ConfiguredTaskAwaitable<T>, что хорошо для реального проекта, но все же является лишь обходным путем.

Вопрос в том:

Кто-нибудь знает причину этой ошибки? Это определенно связано с магией Portable Class Library.


person Stas Shusha    schedule 05.12.2012    source источник
comment
Вы пробовали запускать PEVerify на обеих сборках? Но это определенно похоже на ошибку в компиляторе или во время выполнения.   -  person svick    schedule 06.12.2012
comment
Просто сделал, для обеих библиотек. Все проверено. Но спасибо за полезный совет, про эту утилиту не знал.   -  person Stas Shusha    schedule 06.12.2012
comment
В этом случае вы должны сообщить об этом в Connect.   -  person svick    schedule 06.12.2012


Ответы (1)


Вы используете Visual Studio Ultimate 2012 с включенной функцией IntelliTrace? Это похоже на ошибку, которую следует исправить в последней версии CTP Visual Studio 2012, обновление 2 и в будущих выпусках.

Вы можете подтвердить, что это проблема (и обходить ее, пока не получите исправление), перейдя в Инструменты / Параметры / IntelliTrace и отключив «Включить IntelliTrace».

person Colin Thomsen    schedule 21.03.2013