Xamarin 共享库和 PCL
Xamarin Shared Library and PCL
xamarin 共享项目和可移植 class 库之间的确切区别是什么?
何时使用共享库以及何时使用可移植 class 库?
是否可以在共享项目中编写本机功能,例如显示警报、访问摄像头并将其用于 android 和 iOS?
谁能解释一下。
- 在共享项目中,每个代码文件都将针对每个目标编译(Android、iOS、Windows Phone ETC)。您可以使用
#if
编译器指令来包含特定于平台的代码。
当您想要访问相机时,您需要在所有目标平台的 #if
块中编写访问代码。这可能会弄乱您的代码,但可以更容易地找到不同的实现。
了解更多:http://developer.xamarin.com/guides/cross-platform/application_fundamentals/shared_projects/
- Protable Class 库 (PCL) 是针对与您想要的所有平台兼容的通用 .NET 子集编译的。所以你可以访问
System.Net.Http
但你不能访问任何平台特定的代码。如果你想在 PCL 代码中访问相机,那么你需要通过依赖注入通过通用接口访问它。有一些非常好的框架可以帮助您实现这个目标。其中最著名的一个是 MVVMCross (https://github.com/MvvmCross/MvvmCross/wiki). Learn more about PCL: http://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/sharing_code_options/#Portable_Class_Libraries
我个人更喜欢 PCLs,因为代码在没有任何编译器指令的情况下更容易阅读。使用 MVVMCross,您可以通过 NuGet 使用大量插件。因此,您无需编写自己的 类 来访问摄像头、显示警报等。
xamarin 共享项目和可移植 class 库之间的确切区别是什么?
何时使用共享库以及何时使用可移植 class 库?
是否可以在共享项目中编写本机功能,例如显示警报、访问摄像头并将其用于 android 和 iOS?
谁能解释一下。
- 在共享项目中,每个代码文件都将针对每个目标编译(Android、iOS、Windows Phone ETC)。您可以使用
#if
编译器指令来包含特定于平台的代码。 当您想要访问相机时,您需要在所有目标平台的#if
块中编写访问代码。这可能会弄乱您的代码,但可以更容易地找到不同的实现。 了解更多:http://developer.xamarin.com/guides/cross-platform/application_fundamentals/shared_projects/ - Protable Class 库 (PCL) 是针对与您想要的所有平台兼容的通用 .NET 子集编译的。所以你可以访问
System.Net.Http
但你不能访问任何平台特定的代码。如果你想在 PCL 代码中访问相机,那么你需要通过依赖注入通过通用接口访问它。有一些非常好的框架可以帮助您实现这个目标。其中最著名的一个是 MVVMCross (https://github.com/MvvmCross/MvvmCross/wiki). Learn more about PCL: http://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/sharing_code_options/#Portable_Class_Libraries
我个人更喜欢 PCLs,因为代码在没有任何编译器指令的情况下更容易阅读。使用 MVVMCross,您可以通过 NuGet 使用大量插件。因此,您无需编写自己的 类 来访问摄像头、显示警报等。