Xamarin共享库和PCL

Xamarin共享库和PCL,xamarin,portable-class-library,shared-project,Xamarin,Portable Class Library,Shared Project,xamarin共享项目和可移植类库之间的确切区别是什么 何时使用共享库,何时使用可移植类库 这是否可能在共享项目中编写本机功能,如显示警报、访问摄像头并在android和iOS上使用它 谁能给我解释一下。 在共享项目中将为每个目的地(Android、iOS、Windows Phone等)编译每个代码文件。您可以使用#if编译器指令包含特定于平台的代码。 当您想要访问摄像机时,需要在所有指定平台的#if块中写入访问代码。这可能会弄乱您的代码,但更容易找到不同的实现。 了解更多信息: 可移植类库(P

xamarin共享项目和可移植类库之间的确切区别是什么

何时使用共享库,何时使用可移植类库

这是否可能在共享项目中编写本机功能,如显示警报、访问摄像头并在android和iOS上使用它

谁能给我解释一下。

  • 共享项目中将为每个目的地(Android、iOS、Windows Phone等)编译每个代码文件。您可以使用
    #if
    编译器指令包含特定于平台的代码。 当您想要访问摄像机时,需要在所有指定平台的
    #if
    块中写入访问代码。这可能会弄乱您的代码,但更容易找到不同的实现。 了解更多信息:
  • 可移植类库(PCL)是根据通用.NET子集编译的,该子集与您想要的所有平台兼容。因此,您可以访问
    System.Net.Http
    ,但无法访问任何特定于平台的代码。如果您想访问PCL代码中的摄像头,那么您需要通过依赖项注入通过通用接口访问它。有一些非常好的框架可以帮助您实现这个目标。其中最著名的是MVVMCross()。了解有关PCL的更多信息:

我个人喜欢PCLs,因为代码在没有任何编译器指令的情况下更容易阅读。使用MVVMCross,您可以通过NuGet使用大量插件。因此,您不需要为摄像头访问、显示警报等编写自己的类。

Wosi,您可以使用PCL对摄像头执行与使用平台特定代码相同的操作吗?当然!通过隐藏在独立于平台的接口后面的依赖项注入,使用特定于平台的实现进行摄像头访问实际上是在PCL中运行特定于平台的代码。那么,开发人员为什么不想使用PCL呢?更容易维护SAP?还有别的吗?个人喜好。有时使用ifdef更容易实现每个平台(稍微)不同的功能。也许使用共享项目只是历史原因:直到2013年初,Xamarin才获得稳定的PCL支持。