我希望用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。
我该如何处理这种情况?
感谢。
答案 0 :(得分:0)
将引用的程序集手动复制到.exe所在的文件夹中,或按如下方式编辑FodyWeavers.xml:
<Weavers>
<Costura DisableCleanup='true'/>
</Weavers>
您的引用仍将由Costura.Fody合并为一个.exe,但ConfuserEx需要引用位于同一文件夹中才能工作。
答案 1 :(得分:0)
DisableCleanup =“ true”无效,因为它将压缩的重命名程序集留在obj \ Costura文件夹中。
添加DisableCompression =“ true”将保留未压缩的源程序集,但是该文件仍使用number.costura前缀重命名。手动重命名为所需的原始名称。
基于以上答案,最适合我的最简单解决方案是:
在下面使用默认的FodyWeavers.xml,运行build创建costura 可执行文件减少。
<Weavers>
<Costura />
</Weavers>
答案 2 :(得分:0)
当前最佳选择是完全禁用Costura的使用,并使用ConfuserEx中集成的打包程序。这样做的另一个好处是,附加组件也可以被混淆。
答案 3 :(得分:0)
我也遇到了这个问题。我通过在原始dll文件所在的位置添加探测路径来解决该问题,然后它便可以继续运行而没有错误。