【问题标题】:Failed to resolve dependency of exe .Net无法解决 exe .Net 的依赖关系
【发布时间】:2019-07-27 16:45:06
【问题描述】:

您好,我尝试编译/保护 test.exe 项目。 使用“ConfuserEx”

我得到的错误:

[错误] 无法解析“test.exe”的依赖关系。 异常:dnlib.DotNet.AssemblyResolveException:无法解析程序集:Discord.Net.WebSocket,版本=1.0.2.0,文化=中性,PublicKeyToken=null 在 E:\Source\Public\Confuser2\dnlib\src\DotNet\IAssemblyResolver.cs:line 113 中的 dnlib.DotNet.Extensions.ResolveThrow(IAssemblyResolver self, IAssembly assembly, ModuleDef sourceModule) 在 e:\Source\Public\Confuser2\Confuser.Core\ConfuserEngine.cs:line 264 中的 Confuser.Core.ConfuserEngine.Inspection(ConfuserContext context) 上午 7:06 失败,已过 0:01。

为了解释更多,我有 dll,我必须将它们合并到程序中,使用 .NET Reactor 编译器,然后我使用“ConfuserEx”来保护,并得到了那个错误。

我相信 stackoverflow 开发人员的力量,谢谢。

【问题讨论】:

  • 您无法解析程序集有问题:Discord.Net.WebSocket, Version=1.0.2.0, Culture=neutral, PublicKeyToken=nul
  • bin 文件夹中的 Discord.Net.WebSocket dll 是否正确?
  • @OrYaacov 是的,版本相同。
  • 将正确的 assemblyBinding 添加到您的配置文件中 stackoverflow.com/questions/27544918/…

标签: .net vb.net confuserex


【解决方案1】:

我通过将探测路径添加到 ConfuserEx 设置解决了这个问题。

在 Visual Studio 中,选择 Tools > ConfuserEX Probe Paths

这将打开探测路径对话框。在此对话框中添加您的路径。

请记住,您必须输入 ConfuserEX 所抱怨的 DLL 所在文件夹的确切路径。不幸的是,它不会搜索子文件夹,因此您不能为所有依赖项指定一次 packages 文件夹。

【讨论】:

    【解决方案2】:

    此类问题通常可以通过将受影响的程序集作为外部程序集添加到 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>
    

    路径可能不同。

    【讨论】:

    • 答案适用于 .NET 生态系统的任何语言。
    • 辛苦了,你是最棒的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 2017-02-20
    • 2018-05-25
    相关资源
    最近更新 更多