Невозможно использовать Costura.Fody с ConfuserEx

Я хочу уменьшить размер сборки с Costura.Fody, это работает хорошо, потому что все dll объединены в одну сборку, но у меня проблема с ConfuserEx что я не могу решить.

В частности, когда я открываю ConfuserExТащу .exe в приложении добавьте правило и нажмите Confuse запутать .exe, Я получаю эту ошибку:

[DEBUG] Построение конвейера... [INFO] Устранение зависимостей... [ERROR] Не удалось разрешить зависимость "MyApp.exe". Исключение: dnlib.DotNet.AssemblyResolveException: Не удалось разрешить сборку: MahApp, Версия =1.0.0.0, Культура = нейтральная, PublicKeyToken=null в dnlib.DotNet.Extensions.ResolveThrow(собственная личность IAssemblyResolver, сборка IAssembly, ModuleDef sourceModule): Source\Public\Confuser2\dnlib\src\DotNet\IAssemblyResolver.cs:riga 113 в Confuser.Core.ConfuserEngine.Inspection(контекст ConfuserContext) в e:\Source\Public\Confuser2\Confuser.Core\ConfuserEngine.cs:riga Не удалось в 11:15, прошло 0:00.

это происходит только когда я использую Costura.Fodyпотому что сейчас в bin/debug папка есть только "уменьшенные" сборки по CosturaУ меня нет длл, что ConfuserEx ищем.

Как я могу справиться с этой ситуацией?

Благодарю.

2 ответа

Вручную скопируйте ссылочные сборки в папку, где находится.exe, или отредактируйте файл FodyWeavers.xml следующим образом:

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

Ваши ссылки по-прежнему будут объединены в один.exe с помощью Costura.Fody, однако для работы ConfuserEx необходимо, чтобы ссылки были в одной папке.

DisableCleanup="true" не работает, поскольку оставляет сжатые переименованные сборки в папке obj\Costura.

Добавление DisableCompression="true" оставляет несжатые исходные сборки, однако файл по-прежнему переименовывается с префиксом numbered.costura. Ручное переименование к оригинальным именам обязательно.

Исходя из вышеприведенного ответа, самое простое решение, которое мне показалось, заключается в следующем:

  1. Используйте файл FodyWeavers.xml по умолчанию ниже, запустите build, чтобы создать исполняемый файл с уменьшенной стоимостью.

    <Weavers> <Costura /> </Weavers>

  2. Скопируйте выходной файл с config и pdb в другую папку (я использую упакованную подпапку)
  3. Отключите Costura weaver (прокомментируйте тег Costura в приведенном выше XML-файле) и снова запустите сборку, которая генерирует все dll в папке bin \ debug.
  4. Перезаписать исполняемый файл уменьшенным исполняемым файлом, скопированным с шага 2.
  5. Запустите ConfuseEx и загрузите уменьшенный исполняемый файл (шаг 4)

Источник: https://github.com/Fody/Costura/

В настоящее время лучшим вариантом является полное отключение использования Costura и использование упаковщика, который интегрирован в ConfuserEx. Это имеет дополнительное преимущество, заключающееся в том, что дополнительные сборки также могут быть запутаны.

У меня тоже была эта проблема. Я решил это, добавив пробный путь туда, где были исходные файлы dll, и затем он смог продолжить работу без ошибок.

Другие вопросы по тегам