常见项目默认编译后文件夹中有多个文件,缺少一个就可能运行错误。使用Costura.Fody后可以编译成一个dll文件或者一个exe执行文件,将所有内容合并到一起。
1、在项目中使用NuGet添加依赖:Costura.Fody和Fody
添加后生成的项目dll文件会增大很多,就是使用这个库合一的
2、项目根目录下会自动生成FodyWeavers.xml文件,没有则手动添加,基础内容如下,详细配置后面介绍
<Weavers>
<Costura/>
</Weavers>
# 我的为
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceS>
<Costura />
</Weavers>
3、配置加载顺序(可能不按预期顺序加载,导致依赖项无法正常初始化)
# 包含顺序内容以换行分隔
<Costura>
<PreloadOrder>
Foo
Bar
</PreloadOrder>
</Costura>
# 或使用属性配置,用|分隔资源名称
<Costura PreloadOrder='Foo|Bar' />
4、在测试中代码添加对应函数,如在构造函数或main起始添加
CosturaUtility.Initialize();
5、如果你有特定的文件或文件夹需要包含,可以在 FodyWeavers.xml 文件中进行配置
- IncludeAssemblies 用于指定要包含的特定程序集。
- ExcludeAssemblies不引用
- Unmanaged32Assemblies 和 Unmanaged64Assemblies&