我创建了一个使用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>
将以下代码添加到您的MainWindow构造函数中:
var svg = new SKSvg(); svg.Load(“ image.svg”); SKCanvas canvas =新的SKCanvas(新的SKBitmap()); canvas.DrawPicture(svg.Picture);
请注意,如果将映像文件和exe复制并放置在另一个目录中,则该exe将不会启动。发生这种情况是因为它找不到libSkiaSharp.dll。
答案 0 :(得分:3)
在项目中创建一个Costura32和/或Costura64文件夹。根据其位数将libSkiaSharp.dll复制到适当的目录中。 Costura将自动解压缩并从这些目录中加载本地二进制文件。
答案 1 :(得分:0)
您是否尝试过以下方法:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<Costura>
<IncludeAssemblies>
libSkiaSharp
</IncludeAssemblies>
</Costura>
</Weavers>