管理 .net 标准 xamarin 表单项目的 nuget 包

Managing nuget packages for .net standard xamarin forms project

我正在将 xamarin 表单 pcl 转换为 .net 标准。在项目中我使用了skia sharp和azure mobileservices。

我的理解是,如果我在 .net 标准 class 库中引用这些库,然后在我的 android/ios/uwp 项目中添加对这个 .net 标准 class 库的引用就好了。

然而,我似乎需要为每个项目添加 skiasharp 和 azure 移动服务的 nuget 包 (android/ios/uwp)。真的是这样吗?如果是这样,这比使用 PCL 有什么好处?

我让 android 项目正常工作,但我需要将所有 nuget 包添加到 android 项目。 我让 uwp 项目在没有任何 nuget 包的情况下工作,这让我更加困惑。

使用 PCL 和 .NET Standard 基本相同 - 两者都只是 API 契约或完整 .NET Framework 的子集。但是 .NET Standard 有一个主要优势:.NET Standard 有更多的 APIs - 特别是如果你使用 1.3+ (netstandard1.3 有 System.IO APIs 在 PCL).

中不可用

关于 NuGets,您通常仍需要在所有应用程序项目中引用 NuGet 包,因为某些平台具有不同的实现以利用平台功能。将 .NET Standard 视为所有平台 API 的子集——这就是为什么 SkiaSharp 在某些平台上工作得很好。但是,Android 和 iOS 有不同的实现来利用平台功能。

虽然您没有直接进行 Android 开发(因为您使用的是 Xamarin.Forms),但您不会注意到某些事情。如果您只包含 .NET Standard 包,您将获得基本的 SkiaSharp,例如,它可以在 Xamarin.Forms 颜色和 SkiaSharp 颜色之间进行转换。但是,由于在 android 应用程序中包含该包,您还可以从 Android 颜色转换为 SkiaSharp 颜色。

就个人而言,为了安全起见,我总是将所有 NuGet 包含到应用程序项目中。

以下是一些可能对您有所帮助的文档: https://docs.microsoft.com/en-us/dotnet/standard/net-standard