2017-03-12 2 views
0

Ich möchte EpubReader von VersFx.Formaters.Text.Epub Assembly verwenden. Ich möchte EpubBook in meinen plattformspezifischen Code laden und dann meine eigene Book Klasse in gemeinsamen Code setzen. Es sieht wie folgt aus:System.Drawing wurde nicht gefunden, wenn VersFx.Formaters.Text.Epub installiert wurde

public interface IEpubReader 
    { 
     Book ReadEpub(string bookPath); 
    } 

public class Book 
    { 
     public string Title { get; set; } 
     public string Author { get; set; } 
     public IEnumerable<string> Chapters { get; set; } 
    } 

public class DroidEpubReader : IEpubReader 
    { 
     public Book ReadEpub(string bookPath) 
     { 
      EpubBook epubBook = EpubReader.ReadBook(bookPath); 
      Book book = new Book 
      { 
       Title = epubBook.Title, 
       Author = epubBook.Author, 
       Chapters = epubBook.Chapters.First().SubChapters.Select(sc => sc.Title.ToString()) 
      }; 

      return book; 
     } 
    } 

Book und IEpubReader aus dem gemeinsamen Code kommen.

Ich habe einen Fehler bekommen, als ich meine Lösung gebaut habe.

Severity Code Beschreibung Projektdatei Zeilenunterdrückungszustand Fehler Ausnahme beim Laden von Assemblys: System.IO.FileNotFoundException: konnte nicht geladen werden Montage ‚System.Drawing, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a '. Vielleicht existiert es nicht im Mono für Android-Profil? Dateiname: 'System.Drawing.dll' in Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve (AssemblyNameReference Referenz, ReaderParameters Parameter) in Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences (ICollection`1 Baugruppen, AssemblyDefinition Montage , Boolean topLevel) in Xamarin.Android.Tasks.ResolveAssemblies.Execute() EpubReaderXamarinForms.Droid

ich manuell hinzufügen System.Drawing meinem Android-Projekt hinzufügen wollte. Ich fand zwei ähnliche Assemblies in COM (System.Drawing.dll Version 2.4 und System.Drawing.dll Version 2.0), aber ich habe einen anderen Fehler.

enter image description here

Bitte können Sie mir erklären, was ich falsch gemacht?

Mein package.config gemeinsamer Code:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Xamarin.Forms" version="2.3.3.193" targetFramework="portable45-net45+win8+wp8+wpa81" /> 
</packages> 

package.config von Android-Projekt:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="VersFx.Formats.Text.Epub" version="1.0.2" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.Design" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.v4" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.v7.RecyclerView" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.Vector.Drawable" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Forms" version="2.3.3.193" targetFramework="monoandroid60" /> 
</packages> 

Antwort

1

System.Drawing ist auf Win32 stark abhängig, die in Windows existiert nur. Es ist nicht verfügbar in Xamarin über ein paar einfache Klassen hinaus.

Sie können möglicherweise die Quelle der Bibliothek ändern, um die Abhängigkeit von System.Drawing zu entfernen oder sie durch eine plattformübergreifende Zeichnungsbibliothek wie SkiaSharp zu ersetzen.

+0

Vielen Dank. Ich denke über das Umschreiben des Quellcodes dieser Bibliothek nach. –

Verwandte Themen