c# - Fody Costura 不嵌入 SkiaSharp DLL
问题描述
我创建了一个解决方案,它使用 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。
解决方案
在您的项目中创建 Costura32 和/或 Costura64 文件夹。根据位数将 libSkiaSharp.dll 复制到适当的目录中。Costura 将自动从这些目录中解压缩并加载本机二进制文件。
推荐阅读
- xslt - XSL 在最后一个元素出现时将一个级别元素移动到另一个元素中
- python - 使用pandas python根据来自另一个数据帧的数据更新数据帧
- python - 从 Python 中的嵌套数组中获取数组并将其存储到单独的数组中
- flutter - DateFormField 调用从表单中保存
- javascript - Highcharts:从导出中删除自定义图例工具提示
- azure-devops - 柯南在 Azure 管道中添加远程任务:添加两个遥控器时失败
- c - GCC - 易失变量(全局与本地)
- python - 如何根据需求在python中生成JWT
- android - HMS Core ML Kit和HiAI有什么区别?
- sql - 如何跨多个表/列查找不同的日期