Что неправильно с потреблением ConfiguredTaskПолезно из класса PortableClassLibrary в Debugger из MSTest Runner или Console App?
Примечание. Это только ошибка времени отладки, но очень странная.
Проблема:
Во время работы с приложением Debugger и вызовом метода, который открывается в отдельной переносной библиотеке, возвращая ConfiguredTaskAwaitable
, мы получаем InvalidProgramException
.
Воспроизвести его:
Имея 2 проекта:
-
PortableClassLibrary (поддержка .Net 4.5, Windows Store, Windows Phone 8)
с 1 классом:
public class Weird
{
public static ConfiguredTaskAwaitable GetConfiguredTaskAwaitable()
{
return new ConfiguredTaskAwaitable();
}
}
-
ConsoleApplication с кодом:
static void Main(string[] args)
{
Weird.GetConfiguredTaskAwaitable();
}
Примечания:
- замена
ConfiguredTaskAwaitable
на ConfiguredTaskAwaitable<T>
(общая версия) устраняет эту странную проблему.
- использование этого метода в WP8 или Win8 в приложении Debugger отлично работает.
В настоящее время это вызывает проблемы, из-за которых я не могу запустить тесты модулей в разделе "Отладчик". Я вынужден изменить свою реализацию "ObjectUnderTest"
для возврата общего ConfiguredTaskAwaitable<T>
, что отлично подходит для реального проекта, но все же является лишь обходным решением.
Вопрос:
Кто-нибудь знает причину этой ошибки? Это определенно связано с магией портативной библиотеки классов.
Ответы
Ответ 1
Используете ли вы Visual Studio Ultimate 2012 с включенным IntelliTrace? Это выглядит как ошибка, которая должна быть исправлена в последнем CTP Visual Studio 2012, обновлении 2 и в будущих выпусках.
Вы можете подтвердить, что это проблема (и обходите ее до получения исправления), перейдя в Инструменты/Параметры/IntelliTrace и отключив "Включить IntelliTrace".