如何从 Xamarin iOS 绑定项目引用 .NET 标准库?

How to reference a .NET standard library from a Xamarin iOS binding project?

我已经为 iOS 框架创建了一个 Xamarin iOS 绑定项目。我想要一些生成的绑定 classes 来实现来自 .NET Standard class 库的接口。这失败了,因为我无法从该库中引用 .NET 标准程序集。我怎样才能编译,或者有其他(更好的)方法吗?

重现步骤:

  1. https://docs.microsoft.com/en-us/samples/xamarin/ios-samples/bindingsample/
  2. 下载并解压演示项目
  3. 添加 .NET 标准 class 库项目 "Api"。
  4. 将文件 IApi.cs 添加到 Api 项目:
    namespace Api
    {
        public interface IApi
        {
            Result Status { get; }
        }
    }

    public enum Result
    {
        Success,
        Error
    }
  1. 使绑定项目引用 Api 项目。
  2. 转到 Extras.cs 并将此代码添加到 XMUtilities class:
    partial class XMUtilities : IApi
    {
        public Result Status => string.IsNullOrEmpty(Speak()) ? Result.Error : Result.Success;
  1. 构建项目。它失败并显示 2 个错误

"Error CS0012: The type 'Enum' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. (CS0012) (XMBindingLibrary)"

我找不到添加该引用的方法。特别是中的提示对我不起作用,我不确定是否是同一个问题。

背景: 我有一个带有 Android 和 iOS 版本的第三方库。我想将这两个隐藏在一个共同的 API 后面,并创建多个基于该 API 构建的 Xamarin Forms 项目。上面概述的方法适用于 Android 绑定项目,但现在我正在努力应对 iOS 对应项目。

不幸的是,它不是那样工作的。

您不能 'add' 绑定项目中的本机库的功能,也不能引用其他库:您必须将其视为包装器。

也就是说,您可以创建另一个 Xamarin 本机项目(或网络标准),该项目将引用您的绑定项目和包含您的界面的网络标准库。在此项目中,您将能够子类化并添加所需的行为。