【发布时间】:2019-12-18 02:40:00
【问题描述】:
我为 iOS 框架创建了一个 Xamarin iOS 绑定项目。我希望一些生成的绑定类实现来自 .NET Standard 类库的接口。这失败了,因为我无法从该库中引用 .NET 标准程序集。我怎样才能使这个编译,还是有另一种(更好的)方法?
重现步骤:
- 从https://docs.microsoft.com/en-us/samples/xamarin/ios-samples/bindingsample/下载并解压演示项目
- 添加 .NET 标准类库项目“Api”。
- 将文件 IApi.cs 添加到 Api 项目:
namespace Api
{
public interface IApi
{
Result Status { get; }
}
}
public enum Result
{
Success,
Error
}
- 使绑定项目引用 Api 项目。
- 转到 Extras.cs 并将此代码添加到 XMUtilities 类中:
partial class XMUtilities : IApi
{
public Result Status => string.IsNullOrEmpty(Speak()) ? Result.Error : Result.Success;
- 构建项目。它失败了,有 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