我想使用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;
}
}
Book
和IEpubReader
来自共享代码。
我在构建解决方案时遇到错误。
严重级代码描述项目文件行抑制状态 加载程序集时出现错误异常: 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),但是我又遇到了另一个错误。
请你解释一下我做错了什么?
我的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>
答案 0 :(得分:1)
System.Drawing高度依赖于Win32,Win32仅存在于Windows中。除了几个简单的类之外,它在Xamarin中不可用。
您可以修改库的源以删除对System.Drawing的依赖,或者将其替换为SkiaSharp等跨平台绘图库。