我创建了一个解决方案,该解决方案使用 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。加载("图像.svg"(; SKCanvas canvas = new SKCanvas(new SKBitmap(((; 帆布。DrawPicture(svg.图片(;
请注意,如果复制映像文件和 EXE 并将其放在另一个目录中,则 EXE 将不会启动。发生这种情况是因为它找不到libSkiaSharp.dll。
在项目中创建一个 Costura32 和/或 Costura64 文件夹。将libSkiaSharp.dll复制到适当的目录中,具体取决于其位数。Costura将自动从这些目录中解压缩和加载本机二进制文件。
您是否尝试过以下方法:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<Costura>
<IncludeAssemblies>
libSkiaSharp
</IncludeAssemblies>
</Costura>
</Weavers>