似乎当我在我的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.dll
和AutoMapper.iOS.dll
并未解决问题。
编辑#2 :此问题仅在为设备构建时发生 - 我猜MSIL到本机转换器由于某种原因不喜欢AutoMapper。我正试图找到一种方法来“暗示”我们需要这些符号的编译器,这就是我认为LinkerPleaseInclude.cs
文件的目的。
答案 0 :(得分:5)
此问题暂时得到解决 - 我不得不在AutoMapper中删除有问题的符号并重新编译它。有关我删除的符号的详细信息,请参阅automapper issue #429。在更新AutoMapper以解决此问题之前,这就是您现在必须解决的问题。
在another StackOverflow question中简要解释了这一点的原因 - 基本上.NET和Mono框架之间存在细微差别,在这种情况下与AutoMapper不兼容。
此答案之前已声明您应关闭链接以使用AutoMapper。虽然您可以进行开发,但它不适合生产使用,因为它会产生大量的二进制文件,您将无法将应用程序提交到应用程序商店。