不能将Costura.Fody与ConfuserEx一起使用

问题描述 投票:0回答:3

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

特别是当我打开ConfuserEx时,我在应用程序上拖动.exe,添加规则,然后按Confuse来混淆.exe。我收到此错误:

[DEBUG]构建管道... [INFO]解析依赖项... [ERROR]无法解析“MyApp.exe”的依赖关系。例外:dnlib.DotNet.AssemblyResolveException:无法解析程序集:E:\中的dnlib.DotNet.Extensions.ResolveThrow(IAssemblyResolver self,IAssembly assembly,ModuleDef sourceModule)中的程序集:MahApp,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null Source \ Public \ Confuser2 \ dnlib \ src \ DotNet \ IAssemblyResolver.cs:e:\ Source \ Public \ Confuser2 \ Confuser.Core \ ConfuserEngine.cs中的Confuser.Core.ConfuserEngine.Inspection(ConfuserContext context)中的riga 113:riga 264在11:15失败,0:00结束。

这种情况只发生在我使用Costura.Fody时,因为现在在bin/debug文件夹中只有Costura的“减少”组件,我没有ConfuserEx正在寻找的dll。

我该如何处理这种情况?

谢谢。

c# obfuscation fody-costura confuserex
3个回答
0
投票

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

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

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


0
投票

DisableCleanup =“true”不起作用,因为它在obj \ Costura文件夹中保留压缩的重命名程序集。

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

基于上述答案,对我来说最简单的解决方案是:

  1. 使用下面的默认FodyWeavers.xml,运行build来创建costura减少的可执行文件。 <Weavers> <Costura /> </Weavers>
  2. 使用config和pdb将输出可执行文件复制到另一个文件夹(我使用打包的子文件夹)
  3. 禁用Costura weaver(在上面的xml中注释Costura标记),然后再次运行build,它会生成bin \ debug文件夹中的所有dll。
  4. 使用从步骤2复制的减少的可执行文件覆盖可执行文件。
  5. 运行ConfuseEx并加载减少的可执行文件(步骤4)

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


0
投票

目前最好的选择是完全禁用Costura的使用并使用ConfuserEx中集成的打包器。这具有额外的优点,即附加组件也可以被混淆。

© www.soinside.com 2019 - 2024. All rights reserved.