Невозможно использовать 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. Ручное переименование к оригинальным именам обязательно.
Исходя из вышеприведенного ответа, самое простое решение, которое мне показалось, заключается в следующем:
Используйте файл FodyWeavers.xml по умолчанию ниже, запустите build, чтобы создать исполняемый файл с уменьшенной стоимостью.
<Weavers> <Costura /> </Weavers>
- Скопируйте выходной файл с config и pdb в другую папку (я использую упакованную подпапку)
- Отключите Costura weaver (прокомментируйте тег Costura в приведенном выше XML-файле) и снова запустите сборку, которая генерирует все dll в папке bin \ debug.
- Перезаписать исполняемый файл уменьшенным исполняемым файлом, скопированным с шага 2.
- Запустите ConfuseEx и загрузите уменьшенный исполняемый файл (шаг 4)
Источник: https://github.com/Fody/Costura/
В настоящее время лучшим вариантом является полное отключение использования Costura и использование упаковщика, который интегрирован в ConfuserEx. Это имеет дополнительное преимущество, заключающееся в том, что дополнительные сборки также могут быть запутаны.
У меня тоже была эта проблема. Я решил это, добавив пробный путь туда, где были исходные файлы dll, и затем он смог продолжить работу без ошибок.