安装VersFx.Formaters.Text.Epub时未找到System.Drawing

时间:2017-03-12 12:41:32

标签: c# android xamarin xamarin.forms

我想使用VersFx.Formaters.Text.Epub汇编中的EpubReader。我想将EpubBook加载到我的平台特定代码中,然后将我自己的Book类放入共享代码中。它看起来像这样:

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;
        }
    }

BookIEpubReader来自共享代码。

我在构建解决方案时遇到错误。

  

严重级代码描述项目文件行抑制状态   加载程序集时出现错误异常:   System.IO.FileNotFoundException:无法加载程序集   'System.Drawing,Version = 4.0.0.0,Culture = neutral,   公钥= b03f5f7f11d50a3a”。也许它不存在于Mono中   对于Android profile文件名:'System.Drawing.dll'   Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference   参考,ReaderParameters参数)   Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(ICollection`1   程序集,AssemblyDefinition程序集,布尔topLevel)in   Xamarin.Android.Tasks.ResolveAssemblies.Execute()EpubReaderXamarinForms.Droid

我想手动添加System.Drawing到我的Android项目。我在COM中发现了两个类似的程序集(System.Drawing.dll版本2.4和System.Drawing.dll版本2.0),但是我又遇到了另一个错误。

enter image description here

请你解释一下我做错了什么?

我的package.config共享代码:

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

package.config

<?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>

1 个答案:

答案 0 :(得分:1)

System.Drawing高度依赖于Win32,Win32仅存在于Windows中。除了几个简单的类之外,它在Xamarin中不可用。

您可以修改库的源以删除对System.Drawing的依赖,或者将其替换为SkiaSharp等跨平台绘图库。