我目前已经构建了一个服务层和API,我从ASP.NET网站,Windows Phone应用程序和Windows 8 Metro应用程序中使用它们-所有这些的关键是一个包含模型类的项目,该模型类是可移植类库项目,并在所有项目之间共享作为引用。该体系结构运行良好,没有任何问题。
但是,我最近开始尝试Xamarin-特别是iOS功能(以期以后转移到Android)。我最初的假设是,我将能够像处理其他项目一样利用该模型库-但是,自那以后,我意识到事实并非如此。
当我第一次向Xamarin.iOS项目(在Visual Studio中)添加对模型类库的引用时,出现以下错误:
“当前项目不支持对可移植库项目的引用”。
奇怪-我认为这将是一个受支持的方案。我发现了here帖子,该帖子提出了一项修复程序,该修复程序迫使Visual Studio将Monotouch(Xamarin)框架检测为支持可移植库项目。似乎正是我所需要的-但没有。当我再次添加引用时,遇到了另一个错误:
“当前项目的目标框架与可移植库项目的框架不兼容”。
它建议我在项目属性中更改目标框架。除了我不能,因为Xamarin iOS项目需要支持Monotouch(无论如何我也无法从GUI将其更改为其他任何东西)。因此,我尝试改为更改模型库的属性-也许我可以在那里做些事情。看起来我可以。我可以在此处将Monotouch(Xamarin)检查为受支持的平台(已经检查过Windows Phone,Windows store等),但是我无法保存它。它只显示以下消息:
“您选择的目标框架没有支持的其他功能”
经过一番研究,我发现Xamarin建议共享代码的唯一方法是将单独的项目与链接的代码文件一起使用(因此,实际上是一个伪单个代码库。我已经尝试并使用了它-但似乎是一个hack。请参阅。这里:
http://docs.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/sharing_code_options
那么这是唯一的选择吗?或者有没有办法在所有平台(包括Microsoft和Xamarin)上拥有真正的单一类(模型)库?
最佳答案
当前可以使用可移植图书馆项目-例如配置文件104-涵盖所有.Net4.5,WP,WinRT,Xamarin.Android和Xamarin.iOS
目前还可以在.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个月已经完成了-但是目前涉及一些设置上的麻烦。有关一些信息,请参阅我的博客:
我确实希望在不久的将来对此进行更新-它应该很快就可以使用。
关于visual-studio - Xamarin和Visual Studio,Windows Phone和ASP.NET : Is a true single class library possible?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15868077/