2013-12-09 45 views
3

看來,當我在Xamarin.iOS項目中引用AutoMapper V3.1.0,構建失敗,此錯誤消息:如何在我的Xamarin.iOS項目中使用AutoMapper?

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 s不解決問題。

編輯#2:此問題只出現在爲設備構建時 - 我猜想MSIL到原生轉換器出於某種原因不喜歡AutoMapper。我試圖找到一種方法來向編譯器「暗示」我們需要這些符號,這就是我認爲LinkerPleaseInclude.cs文件的用途。

+0

Jimmy Bogard似乎正在研究MonoTouch支持:http://lostechies.com/jimmybogard/2013/09/04/automapper-3-0-portable-class-libraries-and-platformnotsupportedexception/ –

+0

版本AutoMapper我通過nuget引用了一個名爲'portable-windows8 + net40 + wp8 + sl5 + MonoAndroid + MonoTouch'的軟件包的目錄,所以它看起來像是用於MonoTouch。 –

回答

5

此問題已暫時解決 - 我必須在AutoMapper中修改違規符號並重新編譯它。有關我刪除的符號的更多信息,請參閱automapper issue #429。在更新AutoMapper來解決這個問題之前,這就是你現在需要解決的問題。

其原因在another StackOverflow question中進行了簡要說明 - 基本上,.NET和Mono框架之間存在細微的差異,在這種情況下,它們與AutoMapper不兼容。

此答案先前聲明您應該關閉鏈接以使用AutoMapper。雖然您可以爲開發工作做到這一點,但它不適合用於生產,因爲它會產生大量的二進制文件,您將無法將應用程序提交到應用商店。

+0

我也將這個添加到維基的AutoMapper! –

+0

非常好,我很高興能幫上忙。順便說一下,感謝AutoMapper,吉米! –

相關問題