我创建了一个解决方案,它使用 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 = 新的 SKSvg(); svg.Load("image.svg"); SKCanvas 画布 = new SKCanvas(new SKBitmap()); canvas.DrawPicture(svg.Picture);
请注意,如果您将图像文件和 exe 复制并放在另一个目录中,则 exe 将无法启动。这是因为它找不到 libSkiaSharp.dll。