编译错误在Android中为单声道引用iTextSharp Dll时

时间:2012-08-11 05:23:45

标签: android mono xamarin.android monodevelop

引用iTextSharp dll时出现以下错误

  

C:\ Program Files \ MSBuild \ Novell \ Novell.MonoDroid.Common.targets(2,2):   错误:加载程序集时出现异常:   System.IO.FileNotFoundException:无法加载程序集   'System.Drawing,Version = 2.0.0.0,Culture = neutral,   公钥= b03f5f7f11d50a3a”。也许它不存在于Mono中   对于Android个人资料?

     

文件名:'System.Drawing.dll'

     

在Monodroid.Tuner.MonoDroidResolver.Resolve(AssemblyNameReference)   参考,ReaderParameters参数)

     

在   Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(List`1   程序集,AssemblyDefinition程序集)

     

在Xamarin.Android.Tasks.ResolveAssemblies.Execute()(Dashmate)

另外我试图添加System.Drawing.dll,但它仍然没有解决 错误。

猜测Mono.Android.dll中的System.Drawing与 iTextSharp正在引用的System.Drawing.dll

2 个答案:

答案 0 :(得分:2)

错误告诉您(托管)链接器无法加载程序集。需要此程序集来满足您链接的代码所需的一些引用。如果没有它,链接器将无法重写较小的有效(即工作)程序集。

在这种情况下,它似乎是针对桌面框架程序集编译的iTextSharp(即2.0.0.0版本是提示,Android版本的Mono将是2.1.x)。

通常,此类问题的解决方案是针对Mono for Android提供的程序集重新编译项目(在本例中为iTextSharp)。这样所有引用都将针对M4A程序集,并且链接器将能够处理它们(因为它们不会丢失任何内容,否则它将在编译时失败)。

请注意,如果取决于来自System.Drawing.dll的太多内容,可能无法从源代码重新编译iTextSharp。

  

此外,我尝试添加System.Drawing.dll,但仍无法解决错误。

使用桌面程序集不太可行(因为它们依赖于不同的程序集,具有不同的类型......)。

此外,Windows(或Mono)附带的System.Drawing.dll无法与Mono for Android一起使用,因为它们依赖于GDI +(或mong的libgdiplus),而不是Android的一部分。

  

猜测Mono.Android.dll中的System.Drawing与iTextSharp引用的System.Drawing.dll冲突

没有程序集冲突,因为Android的Mono 附带System.Drawing.dll程序集。但是,某些类型(例如Rectangle[F]Point[F]Size[F])包含在(使用System.Drawing.*命名空间的另一个程序集中,因为它们对我们有帮助(并且众所周知)。 NET开发人员。

答案 1 :(得分:2)

我收到了Xamarin开发团队的回复

  

您不能使用仅在完整.NET中可用的System.Drawing.dll   轮廓。 Mono for Android仅支持基于移动设备的配置文件   与Silverlight几乎相同

所以,我猜我们不能使用具有“System.Drawing”类的第三方dll :(