不能将Costura.Fody与ConfuserEx

时间:2018-03-01 10:21:19

标签: c# obfuscation fody-costura confuserex

我希望用Costura.Fody减少装配尺寸,这很好用,事实上所有的dll都合并在一个装配中,但我遇到ConfuserEx的问题,我无法解决。

特别是当我打开ConfuserEx时,我会拖动应用上的.exe,添加规则,然后按Confuse.exe进行模糊处理。我收到这个错误:

  

[DEBUG]建筑管道......        [INFO]解决依赖关系......       [错误]无法解析' MyApp.exe'的依赖关系。       例外:dnlib.DotNet.AssemblyResolveException:无法解析程序集:MahApp,Version = 1.0.0.0,Culture = neutral,   公钥=空          在dnlib.DotNet.Extensions.ResolveThrow(IAssemblyResolver self,IAssembly assembly,ModuleDef sourceModule)中   E:\来源\公用\ Confuser2 \ dnlib的\ src \ DOTNET的\ IAssemblyResolver.cs:里加   113          在Confuser.Core.ConfuserEngine.Inspection(ConfuserContext context)中   e:\ Source \ Public \ Confuser2 \ Confuser.Core \ ConfuserEngine.cs:riga 264       在11:15,0:00结束时失败。

仅当我使用Costura.Fody时才会发生这种情况,因为现在bin/debug文件夹中只有"缩减" Costura的程序集,我没有ConfuserEx正在寻找的dll。

我该如何处理这种情况?

感谢。

4 个答案:

答案 0 :(得分:0)

将引用的程序集手动复制到.exe所在的文件夹中,或按如下方式编辑FodyWeavers.xml:

<Weavers>
  <Costura DisableCleanup='true'/>
</Weavers>  

您的引用仍将由Costura.Fody合并为一个.exe,但ConfuserEx需要引用位于同一文件夹中才能工作。

答案 1 :(得分:0)

DisableCleanup =“ true”无效,因为它将压缩的重命名程序集留在obj \ Costura文件夹中。

添加DisableCompression =“ true”将保留未压缩的源程序集,但是该文件仍使用number.costura前缀重命名。手动重命名为所需的原始名称。

基于以上答案,最适合我的最简单解决方案是:

  1. 在下面使用默认的FodyWeavers.xml,运行build创建costura 可执行文件减少。

    <Weavers> <Costura /> </Weavers>

  2. 将带有config和pdb的输出可执行文件复制到另一个文件夹(我使用压缩的子文件夹)
  3. 禁用Costura编织器(在上面的xml中注释一下Costura标记),然后再次运行build,它将在bin \ debug文件夹中生成所有dll。
  4. 覆盖可执行文件,并减少从第2步复制的可执行文件。
  5. 运行ConfuseEx并加载减少的可执行文件(步骤4)

来源:https://github.com/Fody/Costura/

答案 2 :(得分:0)

当前最佳选择是完全禁用Costura的使用,并使用ConfuserEx中集成的打包程序。这样做的另一个好处是,附加组件也可以被混淆。

答案 3 :(得分:0)

我也遇到了这个问题。我通过在原始dll文件所在的位置添加探测路径来解决该问题,然后它便可以继续运行而没有错误。