6

引用 iTextSharp dll 时出现以下错误

C:\Program Files\MSBuild\Novell\Novell.MonoDroid.Common.targets(2,2):错误:加载程序集时出现异常:System.IO.FileNotFoundException:无法加载程序集'System.Drawing,版本 = 2.0.0.0 ,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。也许它在 Mono for Android 配置文件中不存在?

文件名:'System.Drawing.dll'

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

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

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

我也尝试添加 System.Drawing.dll ,但仍然没有解决错误。

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

4

2 回答 2

3

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

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

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

于 2012-08-27T03:00:11.583 回答
2

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

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

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

请注意,如果 iTextSharp 依赖于太多来自System.Drawing.dll.

我也尝试添加 System.Drawing.dll ,但仍然没有解决错误。

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

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

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

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

于 2012-08-13T01:58:54.910 回答