我想用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。
我该如何处理这种情况?
谢谢。
手动将引用的程序集复制到.exe所在的文件夹中,或按如下方式编辑FodyWeavers.xml:
<Weavers>
<Costura DisableCleanup='true'/>
</Weavers>
您的引用仍将由Costura.Fody合并为一个.exe,但ConfuserEx需要引用位于同一文件夹中才能工作。
DisableCleanup =“true”不起作用,因为它在obj \ Costura文件夹中保留压缩的重命名程序集。
添加DisableCompression =“true”会保留未压缩的源程序集,但文件仍使用numbers.costura前缀重命名。手动重命名为所需的原始名称。
基于上述答案,对我来说最简单的解决方案是:
<Weavers>
<Costura />
</Weavers>
目前最好的选择是完全禁用Costura的使用并使用ConfuserEx中集成的打包器。这具有额外的优点,即附加组件也可以被混淆。