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 (List`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.dllWindows(またはMono)に同梱されているものは、Androidの一部ではないGDI +(またはMonoの場合はlibgdiplus)に依存しているため、MonoforAndroidでは動作しません。

Mono.Android.dll内のSystem.Drawingが、iTextSharpによって参照されているSystem.Drawing.dllと競合していると推測します。

Mono for Androidにはアセンブリが付属していないため、アセンブリの競合はありませSystem.Drawing.dll。ただし、名前空間を使用する一部のタイプ(たとえば、、Rectangle[F]およびPoint[F])は、.NET開発者にとって役立つ(そしてよく知られている)ため、Size[F](別のアセンブリに)含まれています。System.Drawing.*

于 2012-08-13T01:58:54.910 に答える