【问题标题】:How to reference a .NET standard library from a Xamarin iOS binding project?如何从 Xamarin iOS 绑定项目中引用 .NET 标准库?
【发布时间】:2019-12-18 02:40:00
【问题描述】:

我为 iOS 框架创建了一个 Xamarin iOS 绑定项目。我希望一些生成的绑定类实现来自 .NET Standard 类库的接口。这失败了,因为我无法从该库中引用 .NET 标准程序集。我怎样才能使这个编译,还是有另一种(更好的)方法?

重现步骤:

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

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

“错误 CS0012:类型‘Enum’是在一个未定义的程序集中定义的 参考。您必须添加对程序集“netstandard”的引用, 版本=2.1.0.0,文化=中性,PublicKeyToken=cc7b13ffcd2ddd51'。 (CS0012) (XMBindingLibrary)"

我找不到添加该引用的方法。特别是https://stackoverflow.com/a/42497735/1004651中的提示对我不起作用,我不确定是不是同样的问题。

背景: 我有一个带有 Android 和 iOS 版本的 3rd 方库。我想将这两者隐藏在一个通用 API 后面,并创建多个基于该 API 构建的 Xamarin Forms 项目。上面概述的方法在 Android 绑定项目中运行良好,但现在我在 iOS 对应项目中苦苦挣扎。

【问题讨论】:

    标签: c# xamarin xamarin.ios .net-standard


    【解决方案1】:

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

    您不能在绑定项目中向您的本机库“添加”功能,也不能引用其他库:您必须将其视为包装器。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 2018-08-02
      • 1970-01-01
      • 2016-10-18
      相关资源
      最近更新 更多