Примечание. Это всего лишь ошибка времени отладки, но очень странная.
Проблема:
При запуске с присоединенным отладчиком и вызовом метода, представленного в отдельной переносимой библиотеке, возвращающего ConfiguredTaskAwaitable
, мы получаем InvalidProgramException
.
Воспроизвести это:
Имея 2 проекта:
PortableClassLibrary (поддерживает .Net 4.5; Магазин Windows; 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 в отладчике работает нормально.
В настоящее время это вызывает проблемы, потому что я не могу запустить свои модульные тесты в отладчике. Я вынужден изменить мою реализацию «ObjectUnderTest» так, чтобы она возвращала общий ConfiguredTaskAwaitable<T>
, что хорошо для реального проекта, но все же является лишь обходным путем.
Вопрос в том:
Кто-нибудь знает причину этой ошибки? Это определенно связано с магией Portable Class Library.