我创建了一个解决方案,使用Costura.Fody nuget包将引用的程序集合并为嵌入资源。 我希望这样可以为我的应用程序创建单个exe文件。 这在添加对SkiaSharp的引用(具体地说是nuget包SkiaSharp和SkiaSharp.Svg)之前一直运作良好。 然而,libSkiaSharp.dll没有被嵌入,而是内置于启动项目文件夹中,并且我无法独立运行程序exe,除非我将dll保留在同一文件夹中。 有没有办法解决这个问题呢?
以下是重现此问题的步骤: 1. 创建新的WPF项目 2. 添加Costura.Fody和Fody nuget包。 3. 添加名为FodyWeavers.xml的文件,并将其内容设置为:
以下是重现此问题的步骤: 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 = new SKCanvas(new SKBitmap()); canvas.DrawPicture(svg.Picture);
请注意,如果复制图像文件和exe并放置在另一个目录中,则exe将无法启动。这是因为找不到libSkiaSharp.dll。