0

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

特别是当ConfuserEx.exe打开. 我收到此错误:Confuse.exe

[DEBUG] 构建管道... [INFO] 解决依赖关系... [错误] 无法解决“MyApp.exe”的依赖关系。异常:dnlib.DotNet.AssemblyResolveException:无法解析程序集:E:\ Source\Public\Confuser2\dnlib\src\DotNet\IAssemblyResolver.cs:riga 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

4 回答 4

0

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

于 2019-02-28T15:01:20.537 回答
0

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

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

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

于 2018-03-14T14:33:26.913 回答
0

我也有这个问题。我通过向原始 dll 文件所在的位置添加探测路径来解决它,然后它能够​​继续没有错误。

于 2020-06-25T06:04:31.940 回答
0

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

添加 DisableCompression="true" 会保留未压缩的源程序集,但仍使用 numbered.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/

于 2018-12-01T22:09:24.140 回答