引用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
答案 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 :(