C#合并DLL到exe中

发布时间 2023-08-21 15:29:47作者: 泰小海

操作步骤

  1. 通过 NuGet 安装 Costura.Fody 和 Fody
    下载相应包
  2. 将根目录下的【FodyWeavers.xml】文件内容替换成下面代码在编译即可
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<Costura>
    <ExcludeAssemblies>
      Foo
      Bar
    </ExcludeAssemblies>
  </Costura>
</Weavers>

进阶操作

  1. ExcludeAssemblies
    默认情况下,Costura.Fody 会将所有 Copy Local 的程序集进行合并。ExcludeAssemblies 用于指定不需要合并的程序集,注意文件名中不要后缀。
    <Costura>
    <ExcludeAssemblies>
     Foo
     Bar
    </ExcludeAssemblies>
    </Costura>
    
    或者
    <Costura ExcludeAssemblies='Foo|Bar' />
    
  2. IncludeDebugSymbols
    控制是否将程序集的相应 pdb 文件嵌入,默认值为 true
    <Costura IncludeDebugSymbols='false' />
    
  3. CreateTemporaryAssemblies
    在程序运行时,将被嵌入的程序集生成到本地,默认值为 false 。如果该程序集的正常运行依赖于其物理地址,一定要启用此功能。
    <Costura CreateTemporaryAssemblies='true' />
    
  4. DisableCleanup
    默认情况下,被嵌入的程序集将从编译的输出目录中清除,可通过该属性来禁用清理。
    <Costura DisableCleanup='true' />
    
  5. 非托管程序集的嵌入
    <Costura Unmanaged32Assemblies='Foo32|Bar32' Unmanaged64Assemblies='Foo64|Bar64'/>
    
  6. 本地库和预加载顺序
    <Costura PreloadOrder='Foo|Bar' />