xamarin共享项目和便携式类库之间的确切区别是什么?
何时使用共享库以及何时使用可移植类库?
是否可以在共享项目中编写本机功能,例如显示警报,访问摄像头并将其用于Android和iOS?
任何人都可以解释一下。
答案 0 :(得分:34)
#if
编译器指令包含特定于平台的代码。
当您想要访问摄像机时,您需要在#if
块内为所有目标平台编写访问代码。这可能会弄乱您的代码,但可以更容易地找到不同的实现。
了解详情:http://developer.xamarin.com/guides/cross-platform/application_fundamentals/shared_projects/ System.Net.Http
,但无法访问任何特定于平台的代码。如果要访问PCL代码中的摄像头,则需要通过依赖注入通过通用接口访问它。有一些非常好的框架可以帮助您实现这一目标。其中最着名的是 MVVMCross (https://github.com/MvvmCross/MvvmCross/wiki)。详细了解PCL:http://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/sharing_code_options/#Portable_Class_Libraries 我个人认可PCL,因为没有任何编译器指令,代码更容易阅读。使用MVVMCross,您可以通过NuGet使用大量插件。因此,您无需为摄像机访问编写自己的类,显示警报等。