【发布时间】:2013-05-09 14:11:48
【问题描述】:
我正在为我的应用程序扩展支持的平台数量,它曾经支持 .NET4/Windows Store/Windows Phone,但我希望也涵盖适用于 Android 和 iOS 的 Mono。我已经将所有业务逻辑、模型和视图模型都放到了可移植类库 (PCL) 中,但是我应该针对哪个平台子集,这是一个很大的难题。每种组合都会导致某些事情失败。以下是我可能使用的 4 个平台的结果:
Profile 78 (NET45+WP8+Store):TPL 没有问题,await/async 并支持 CallerMemberName 属性(用于 BindableBase 视图模型基类)。但是引用此类库的 Mono.Android 项目无法构建抱怨不存在的 System.Runtime.dll 应该被引用。
Profile 104 (NET45+SL4+WP75+Store):await/async 不起作用,找不到 CallerMember 名称,但如果我删除对它们的所有引用,Android 项目构建正常。
Profile 147 (NET403+SL5+WP8+Store):await/async 不起作用,找不到 CallerMember 名称,但如果我删除对它们的所有引用,Android 项目构建正常。
Profile 158 (NET45+SL5+WP8+Store):等待/异步不起作用,未找到 CallerMember 名称,但如果我删除对它们的所有引用,Android 项目构建良好。
所以我不确定该选择什么。配置文件 78、104、147 是有限的,配置文件 78 是唯一同时支持等待/异步和 CallerMemberName 使用 BindableBase 的配置文件,但它在 Android 上失败并抱怨 System.Runtime.dll。因此,如果您了解哪种 PCL 配置文件最适合针对 Mono 的 PCL,请分享您的想法。
【问题讨论】:
-
请务必使用
Microsoft.Bcl.Async(取决于Microsoft.Bcl)。这些将 async/await/CallerMemberName 支持添加到配置文件 104/147/158。 -
Microsoft.Bcl.Async 只能在 Windows 平台上分发(目前为止)。没有单声道。
-
@VagifAbilov 许可已在 Microsoft.Bcl.Async hanselman.com/blog/…987654321@上更改
-
@NateCook 是的,这是微软的一个伟大举措。
标签: mono xamarin.ios xamarin.android portable-class-library