如何在我的Xamarin.iOS项目中使用AutoMapper?

时间:2013-12-09 12:18:46

标签: xamarin.ios automapper

似乎当我在我的Xamarin.iOS项目中引用AutoMapper v3.1.0时,构建失败并显示以下错误消息:

Error MT2002: Failed to resolve "System.Linq.Expressions.Expression System.Linq.Expressions.ExpressionVisitor::Visit(System.Linq.Expressions.Expression)" reference from "System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e" (MT2002)

当我在添加之前回滚到修订版本时,一切正常。

不幸的是,我已经在我的单元测试中使用AutoMapper做了很多工作,现在删除它会有问题。我想这是一个值得学习的教训:仅仅因为它在测试中起作用并不意味着它在Xamarin.iOS中有效。

如果有人有任何想法,我将非常感激。

编辑:我现在在AutoMapper包中发现了一个MonoTouch目录,但引用其中的AutoMapper.dllAutoMapper.iOS.dll并未解决问题。

编辑#2 :此问题仅在为设备构建时发生 - 我猜MSIL到本机转换器由于某种原因不喜欢AutoMapper。我正试图找到一种方法来“暗示”我们需要这些符号的编译器,这就是我认为LinkerPleaseInclude.cs文件的目的。

1 个答案:

答案 0 :(得分:5)

此问题暂时得到解决 - 我不得不在AutoMapper中删除有问题的符号并重新编译它。有关我删除的符号的详细信息,请参阅automapper issue #429。在更新AutoMapper以解决此问题之前,这就是您现在必须解决的问题。

another StackOverflow question中简要解释了这一点的原因 - 基本上.NET和Mono框架之间存在细微差别,在这种情况下与AutoMapper不兼容。

此答案之前已声明您应关闭链接以使用AutoMapper。虽然您可以进行开发,但它不适合生产使用,因为它会产生大量的二进制文件,您将无法将应用程序提交到应用程序商店。