无法解决 exe .Net 的依赖关系

Failed to resolve dependency of exe .Net

你好,我尝试 compile/protect test.exe 项目。 使用 "ConfuserEx"

我得到的错误:

[ERROR] Failed to resolve dependency of 'test.exe'. Exception: dnlib.DotNet.AssemblyResolveException: Could not resolve assembly: Discord.Net.WebSocket, Version=1.0.2.0, Culture=neutral, PublicKeyToken=null at dnlib.DotNet.Extensions.ResolveThrow(IAssemblyResolver self, IAssembly assembly, ModuleDef sourceModule) in E:\Source\Public\Confuser2\dnlib\src\DotNet\IAssemblyResolver.cs:line 113 at Confuser.Core.ConfuserEngine.Inspection(ConfuserContext context) in e:\Source\Public\Confuser2\Confuser.Core\ConfuserEngine.cs:line 264 Failed at 7:06 AM, 0:01 elapsed.

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

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

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

路径可能不同。

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

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

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

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