我在延长支持的平台数我的应用程序的工作,它用来支持.NET4 / Windows应用商店/ Windows Phone的,但我希望也包括单声道Android和iOS。 我已经把所有的业务逻辑,模型和视图模型便携式类库(PCL),但它是一个大难题我应该针对哪些平台子集。 每一种组合会导致一些失败。 下面是我可能会使用4个平台上的结果:
简介78(NET45 + WP8 +店铺):与TPL没有问题,等待用于CallerMemberName属性(在BindableBase视图模型基类使用)/异步和支持。 但是,这是指这样的库的Mono.Android项目构建失败,抱怨不存在的System.Runtime.dll应引用。
简介104(NET45 + SL4 + WP75 +店):等待/异步不工作,没有发现CallerMember的名字,但如果我删除所有对它们的引用,Android项目构建的罚款。
简介147(NET403 + SL5 + WP8 +店):等待/异步不工作,CallerMember名没有找到,但如果我删除对它们的所有引用,Android项目构建的罚款。
简介158(NET45 + SL5 + WP8 +店):等待/异步不工作,CallerMember名没有找到,但如果我删除对它们的所有引用,Android项目构建的罚款。
所以,我真的不知道该怎么选择。 型材78,104,147是有限的,型材78是同时支持等待/异步和CallerMemberName使用BindableBase唯一的,但它不能在Android抱怨System.Runtime.dll。 所以,如果你有什么PCL配置文件用于PCL单目标的最佳匹配的经验,请分享你的看法。
关于文件编号的思考是很难 - 我更愿意认为,在平台方面。
理想的情况是我喜欢我的项目,以支持:
- .NET 3.5和更高
- SL3和更高
- WP7.x电话和更高
- MonoDroid的1.6和更高
- MonoTouch的iOS6的和更高
- (Mac桌面OSX狮子)
主要PCL项目,我支持是MvvmCross - 这需要MVVM“设施”像ICommand的。 这些设施只在.NET 4.5和更高的平台上......这是一个硬限制 - 什么我可以做些什么 - 因此改变了我的需要:
-
.NET 3.5和更高的 .NET 4.5 -
SL3和 SL4 较高和更高 - WP7.x电话和更高
- MonoDroid的1.6和更高
- MonoTouch的iOS6的和更高
- (Mac桌面OSX狮子)
有了这个选择的地方,那么这个我引到一个文件号码 - 104(不知道该怎么平台决定这个......放弃了询问很久以前!)
所以我的目标MvvmCross在型材104 - 它会在那里住,同时还需要WP7.x支持。
这个选择并不意味着MvvmCross不能出的现成状支撑事情async
/ await
和CallerMemberName
-但这是我们决定做出了妥协-我们谁需要 WP7用户。
然而,有些人询问等待/异步...
要使用这些新功能,也有一些BCL.Async的NuGet黑客,使他们在个人资料104工作......或这些用户可以针对在新的轮廓他们的应用程序(一个不支持WP7.x和SL4) - 此引导他们建立自己的轮廓78应用程序,但将引用添加到我的个人资料104组件。
在既不存在这些套解决方案的效果非常好与Xamarin双胞胎 - 例如,你喜欢打失踪System.Runtime.dll装配问题。 不过,我预计,当Xamarin正式支持PCLS(经过一番Alpha / Beta测试),那么这些问题将会得到解决。 这个官方的支持很快,现在是因为 - 这就是为什么我也懒得花费我太多的时间去思考这些问题......
我预计在中期是MvvmCross将下降为WP7.x和SL4支持。 当发生这种情况,我们也可以移动核心库来分析78。
唯一的其他大平台我知道已经开始PCL支持ReactiveUI。 我认为,由于反应从微软的PCL版本的目标是78这个平台必须使用配置文件78。