1

我正在将 xamarin 表单 pcl 转换为 .net 标准。在项目中,我使用skia sharp 和azure 移动服务。

我的理解是,如果我在 .net 标准类库中引用这些库,然后在我的 android/ios/uwp 项目中添加对这个 .net 标准类库的引用,一切都会好起来的。

但是,似乎我需要为每个项目(android/ios/uwp)添加用于skiasharp和azure mobileservices的nuget包。真的是这样吗?如果是这样,这比使用 PCL 更好吗?

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

4

1 回答 1

1

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

对于 NuGet,您通常仍需要在所有应用项目中引用 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

于 2018-02-02T16:01:24.797 回答