Fody Costura没有嵌入SkiaSharp DLL

时间:2018-10-09 20:09:53

标签: c# dll skiasharp skia fody-costura

我创建了一个使用Costura.Fody nuget包将引用的程序集合并为嵌入式资源的解决方案。我想要这样做,以便可以为我的应用程序创建一个exe。在我添加了对SkiaSharp的引用(特别是nuget包SkiaSharp和SkiaSharp.Svg)之前,这工作了一段时间。 libSkiaSharp.dll未嵌入,而是构建在启动项目文件夹中,除非将dll保留在同一文件夹中,否则我无法自行运行程序exe。有没有办法来解决这个问题?

以下是重现此内容的步骤:

1.创建一个新的WPF项目
2.添加Costura.Fody和Fody nuget包。
3.添加一个名为FodyWeavers.xml的文件,其内容设置为此:

<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
  <Costura/>
</Weavers> 
  1. 在bin / Debug文件夹中生成并运行exe文件。请注意,即使将exe移到新位置,程序也会启动。
  2. 添加SkiaSharp和SkiaSharp.Svg nuget程序包。
  3. 获取一个svg文件并将其添加到您的项目目录中
  4. 将以下代码添加到您的MainWindow构造函数中:

    var svg = new SKSvg(); svg.Load(“ image.svg”); SKCanvas canvas =新的SKCanvas(新的SKBitmap()); canvas.DrawPicture(svg.Picture);

  5. 请注意,如果将映像文件和exe复制并放置在另一个目录中,则该exe将不会启动。发生这种情况是因为它找不到libSkiaSharp.dll。

2 个答案:

答案 0 :(得分:3)

在项目中创建一个Costura32和/或Costura64文件夹。根据其位数将libSkiaSharp.dll复制到适当的目录中。 Costura将自动解压缩并从这些目录中加载本地二进制文件。

答案 1 :(得分:0)

您是否尝试过以下方法:

<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
  <Costura>
    <IncludeAssemblies>
        libSkiaSharp
    </IncludeAssemblies>
  </Costura>
</Weavers>