我创建了一个使用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>
>在bin / Debug文件夹中生成并运行exe文件.请注意,即使将exe移到新位置,程序也会启动.
>添加SkiaSharp和SkiaSharp.Svg nuget包.
>获取一个svg文件并将其添加到您的项目目录中
>将以下代码添加到您的MainWindow构造函数中:
var svg = new SKSvg();
svg.Load(“ image.svg”);
SKCanvas canvas =新的SKCanvas(新的SKBitmap());
canvas.DrawPicture(svg.Picture);
>请注意,如果您复制图像文件和exe并将其放置在另一个目录中,则该exe将不会启动.发生这种情况是因为它找不到libSkiaSharp.dll.
解决方法:
在您的项目中创建一个Costura32和/或Costura64文件夹.根据其位数将libSkiaSharp.dll复制到适当的目录中. Costura将从这些目录中自动解压缩并加载本机二进制文件.