Примечание. Это только ошибка времени отладки, но очень странная.
Проблема:
Во время работы с приложением 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>
, что отлично подходит для реального проекта, но все же является лишь обходным решением.
Вопрос:
Кто-нибудь знает причину этой ошибки? Это определенно связано с магией портативной библиотеки классов.