我是否必须重新编译.dll才能在Mono Android项目中使用它?

时间:2013-09-13 13:24:37

标签: c# .net xamarin.android

我最近从Xamarin获得了Mono Android的学生执照。

在做了一个简单的项目之后,我决定开始在我的Android应用程序(单声道项目)上使用我熟悉的一些DLL,例如Json.NetH.A.P,这就是问题开始的时候。 / p>

尝试从NuGet中提取这些引用后,它们失败了,因为“Android应用程序”项目未知导致没有安装.dll(NuGet尝试将项目类型与正确的.dll匹配,即可下载到WindowsPhone, .NET4,.NET 3.5等。)

所以我继续手动引用这些库,因为我已将它们下载到我的PC上。引用Works,但是当我尝试访问HtmlAgilityPack时,它会引发异常。

Error CS0012: 
The type 'System.Xml.XPath.IXPathNavigable' is defined in an assembly that is not     referenced. 
You must add a reference to assembly 'System.Xml, Version=x.x.x.x, Culture=neutral

由于J.I.T编译.NET,第一次执行代码时会引发异常,我知道这一点。

问题: 我怎么能在我的Mono Android项目中使用我的“如此喜爱的”.dll?

我是否需要这些库的源代码才能在我的项目中使用它们?

先谢谢

1 个答案:

答案 0 :(得分:1)

为了重新编译程序集,您需要源代码。

要查看Xamarin.Android和Xamarin.iOS提供的程序集,您可以访问以下两页:

http://docs.xamarin.com/guides/android/advanced_topics/assemblies

http://docs.xamarin.com/guides/ios/advanced_topics/assemblies

重新编译它的一种方法是创建一个Android类库或iPhone类库,并添加一个指向原始源中所有文件的链接,然后进行编译。或者当Xamarin完成PCL支持时,只需在PCL中执行类似操作,以便您有一个针对多个平台的DLL。

您可能还会发现这篇文章很有用,它简要介绍了如何针对Xamarin.Android编译HtmlAgilityPack:http://forums.xamarin.com/discussion/comment/2139/#Comment_2139您可能需要更改一些内容,因为这是从2012年12月开始的,因为事情可能已经发生了变化。 / p>