Не удалось разрешить зависимость exe .Net - PullRequest
0 голосов
/ 06 марта 2019

Здравствуйте, я пытаюсь скомпилировать / защитить test.exe проект. используя "ConfuserEx"

ошибка, которую я получил:

[ОШИБКА] Не удалось разрешить зависимость «test.exe». Исключение: dnlib.DotNet.AssemblyResolveException: не удалось разрешить сборку: Discord.Net.WebSocket, версия = 1.0.2.0, культура = нейтральная, PublicKeyToken = ноль в dnlib.DotNet.Extensions.ResolveThrow (собственно IAssemblyResolver, сборка IAsmbly, ModuleDef sourceModule) в E: \ Source \ Public \ Confuser2 \ dnlib \ src \ DotNet \ IAssemblyResolver.cs: строка 113 в Confuser.Core.ConfuserEngine.Inspection (контекст ConfuserContext) в e: \ Source \ Public \ Confuser2 \ Confuser.Core \ ConfuserEngine.cs: строка 264 Сбой в 7:06, 0:01 прошло.

Чтобы объяснить больше, у меня есть DLL, я должен объединить их внутри программы, используя компилятор .NET Reactor, после этого я использовал "ConfuserEx" для защиты и получил эту ошибку.

Я верю в мощность стека overflow и спасибо.

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Подобные проблемы обычно можно обойти, добавив затронутую сборку в качестве внешней сборки в проект ConfuserEx.

Это можно сделать в файле * .crproj, добавив:

<module path="Discord.Net.WebSocket.dll" external="true" />

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

Часть external="true" означает, что сборка не подлежит упаковке или запутыванию, а используется только для разрешения ссылок.

Таким образом, в итоге файл проекта ConfuserEx должен выглядеть примерно так:

<project outputDir=".\Confused" baseDir="." xmlns="http://confuser.codeplex.com">
  <rule pattern="true" …>
    …
  </rule>
  <module path="test.exe" />
  <module path="Discord.Net.WebSocket.dll" external="true" />
</project>

Пути могут отличаться.

0 голосов
/ 17 мая 2019

Я решил проблему, добавив Probe Paths в настройки ConfuserEx.

В Visual Studio выберите Tools> ConfuserEX Probe Paths.

enter image description here

Откроется диалоговое окно Probe Paths. Добавьте свои пути в этом диалоговом окне.

enter image description here

Имейте в виду, что вам нужно ввести точный путь к папке, в которой находится DLL, на которую жалуется ConfuserEX. К сожалению, он не ищет подпапки, поэтому вы не можете указать папку packages один раз для всех ваших зависимостей.

...