【问题标题】:Managing nuget packages for .net standard xamarin forms project管理 .net 标准 xamarin 表单项目的 nuget 包
【发布时间】:2018-02-01 23:58:03
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: xamarin.forms nuget azure-mobile-services .net-standard skiasharp


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-28
      • 2019-11-12
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      • 2019-02-21
      相关资源
      最近更新 更多