8

我目前已经构建了一个服务层和 API,我正在从一个 ASP.NET 网站、Windows Phone 应用程序和一个 Windows 8 Metro 应用程序中使用它们——它们的关键是一个包含模型类的项目,它是一个可移植类库项目,并在所有项目之间共享作为参考。该架构运行良好,没有任何问题。

但是,我最近开始尝试使用 Xamarin - 特别是 iOS 功能(以期稍后迁移到 Android)。我最初的假设是,我可以像使用其他项目一样使用这个模型库 - 但是,我已经意识到情况并非如此。

当我第一次向我的 Xamarin.iOS 项目(在 Visual Studio 中)添加对我的模型类库的引用时,我遇到了错误:

'当前项目不支持对便携式库项目的引用'。

奇怪 - 因为我认为这将是一个支持的场景。我在这里找到了一个帖子,它建议了一个修复程序,该修复程序强制 Visual Studio 检测 Monotouch (Xamarin) 框架是否支持便携式库项目。似乎正是我所需要的——但不是。当我再次添加引用时,我遇到了另一个错误:

'当前项目的目标框架与便携式库项目的目标框架不兼容'。

它建议我更改项目属性中的目标框架。除了我不能,因为 Xamarin iOS 项目需要支持 Monotouch(无论如何我都不能从 GUI 将它更改为其他任何东西)。所以我试着改变模型库的属性——也许我可以在那里做点什么。看起来我可以。我可以在这里检查 Monotouch (Xamarin) 作为受支持的平台(已经检查了 Windows 手机、Windows 商店等),但它不会让我保存。它只显示消息:

'您选择的目标框架不支持其他功能'

经过一番研究,我发现 Xamarin 建议共享代码的唯一方法是使用带有链接代码文件的单独项目(因此实际上是一个伪单一代码库。我已经尝试过并且可以工作 - 但它似乎是一个 hack。见这里:

http://docs.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/sharing_code_options

那么这是唯一的选择吗?或者有没有办法在所有平台上拥有一个真正的单一类(模型)库,包括 Microsoft 和 Xamarin?

4

2 回答 2

1

目前可以在所有 .Net4.5、WP、WinRT、Xamarin.Android 和 Xamarin.iOS 中使用便携式库项目 - 例如配置文件 104

目前还可以跨 .Net4.5、WP、WinRT 和 Xamarin.Android 使用输出二进制程序集,但目前还不能针对 Xamarin.iOS。

随着 Xamarin 采用完整的 PCL 支持,这种情况正在“很快”发生变化 - 请参阅http://slodge.blogspot.co.uk/2013/02/the-future-is-portable.html并收听http://hanselminutes .com/362/ios-and-android-apps-with-xamarin-studio-20-and-miguel-de-icaza

我个人使用 PCL 交付 MvvmCross(以及许多使用 MvvmCross 的应用程序) - 并且在过去 6 个月中一直这样做 - 但目前这涉及到一些设置问题。有关一些信息,请参阅我的博客:

我确实希望在不久的将来提供这方面的更新——它应该很快就会“开箱即用”。

于 2013-04-08T15:13:16.667 回答
0

Xamarin 的未来一片光明,因为它将在其所有平台上支持 .NET 4.5 配置文件,

http://blog.xamarin.com/brave-new-async-mobile-world/

据我所知,唯一的问题来自微软方面,他们拒绝将自己的平台统一到一个共同的配置文件中(在我自己的情况下,Windows 8 和 Windows Phone 8 仍然是杂乱无章的定制版本,并不比 CF 或 Silverlight 好)。

便携式类库已经存在,但作为库作者 ( #SNMP ),我宁愿按照 Xamarin 的建议为我自己的项目构建单独的项目文件。

于 2013-04-08T02:37:37.727 回答