C# Fody Costura不嵌入SkiaSharep DLL
我创建了一个解决方案,它使用Costura.Fody nuget包将引用的程序集合并为嵌入式资源。我想要这个,这样我就可以为我的应用程序创建一个exe。在我添加了对SkiaSharep的引用(特别是nuget软件包SkiaSharep和SkiaSharep.Svg)之前,这一功能一直很好。libSkiaSharp.dll不是嵌入的,而是构建在启动项目文件夹中,我无法单独运行程序exe,除非我将dll保留在同一文件夹中。有办法解决这个问题吗 以下是重现此过程的步骤:C# Fody Costura不嵌入SkiaSharep DLL,c#,dll,skiasharp,skia,fody-costura,C#,Dll,Skiasharp,Skia,Fody Costura,我创建了一个解决方案,它使用Costura.Fody nuget包将引用的程序集合并为嵌入式资源。我想要这个,这样我就可以为我的应用程序创建一个exe。在我添加了对SkiaSharep的引用(特别是nuget软件包SkiaSharep和SkiaSharep.Svg)之前,这一功能一直很好。libSkiaSharp.dll不是嵌入的,而是构建在启动项目文件夹中,我无法单独运行程序exe,除非我将dll保留在同一文件夹中。有办法解决这个问题吗 以下是重现此过程的步骤: 1.创建新的WPF项目 2.添
1.创建新的WPF项目
2.添加Costura.Fody和Fody nuget套餐。
3.添加名为FodyWeavers.xml的文件,其内容设置如下:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<Costura/>
</Weavers>
在项目中创建Costura32和/或Costura64文件夹。根据libSkiaSharp.dll的位,将其复制到相应的目录中。Costura将自动从这些目录中解压缩并加载本机二进制文件。您是否尝试过以下方法:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<Costura>
<IncludeAssemblies>
libSkiaSharp
</IncludeAssemblies>
</Costura>
</Weavers>
利巴斯基夏普酒店
顺便提一下,我认为这个问题的原因与libSkiaSharp.dll是本机库这一事实有关。但是,我尝试使用IncludeAssemblies标记在FodyWeavers.xml文件中添加对库的引用。但到目前为止,我还没有弄明白如何让它嵌入所有DLL。这很有帮助,因为它确实有效。然而,如果我要更新SkiaSharep nuget包,那么这些文件可能会在没有人知道的情况下过时。添加生成后事件以将libSkiaSharp文件从调试文件夹复制到Costura文件夹将不起作用,因为这些文件需要作为嵌入资源引用。成功的生成取决于文件是否存在,因此无法在生成后复制这些文件。我也无法从nuget软件包文件夹复制,因为不同版本的Windows有不同的libSKiaSharp文件。设置预生成事件如何?我也无法执行预生成事件,因为此时文件尚未复制到调试文件夹。它们是在项目生成后复制的。这很令人沮丧,因为我知道我可以让它工作,但它并不理想。你能做两个构建,从一个预构建开始,并将它们嵌入到第二个构建中吗?当我添加此项时,构建失败,并出现以下错误:“Fody/Costura:Assembly'libSkiaSharp'找不到(甚至不是CopyLocal='false'),请更新配置”