Я работаю над расширением числа поддерживаемых платформ для своего приложения, которое используется для поддержки .NET4/Windows Store/Windows Phone, но я надеюсь также охватить Mono для Android и iOS. Я поместил всю бизнес-логику, модели и модели представления в портативные библиотеки классов (PCL), но это большая дилемма, на какой подмножество платформ я должен настроить. Каждая комбинация приводит к сбою. Вот результаты для 4 платформ, которые я мог бы использовать:
Профиль 78 (NET45 + WP8 + Store): нет проблем с TPL, await/async и поддержкой атрибута CallerMemberName (используется в базовом классе модели представления BindableBase). Но проект Mono.Android, который ссылается на такую библиотеку, не может создавать жалобы на несуществующий файл System.Runtime.dll, на который следует ссылаться.
Профиль 104 (NET45 + SL4 + WP75 + Store): await/async не работает, имя CallerMember не найдено, но если я удалю все ссылки на них, проект Android будет прекрасен.
Профиль 147 (NET403 + SL5 + WP8 + Store): await/async не работает, имя CallerMember не найдено, но если я удалю все ссылки на них, то проект Android будет прекрасен.
Профиль 158 (NET45 + SL5 + WP8 + Store): await/async не работает, имя CallerMember не найдено, но если я удалю все ссылки на них, то проект Android будет прекрасен.
Так что я не совсем уверен, что выбрать. Профили 78, 104, 147 ограничены, профиль 78 является единственным, который поддерживает как await/async, так и CallerMemberName, используемый BindableBase, но он не работает на Android, жалуясь на System.Runtime.dll. Поэтому, если у вас есть опыт работы с тем, какой профиль PCL подходит для PCL-таргетинга Mono, пожалуйста, поделитесь своими мыслями.