在 C++/CLI 中动态加载 EXE 程序集时发生异常(无法加载文件或程序集',版本 = 1.0.3836.39802 ...)

Usm*_*man 2 .net mixed-mode assemblies c++-cli visual-c++

我在动态加载程序集时遇到 C++/CLI 异常,该程序集本身使用Assembly.Load. 它成功加载 DLL 程序集,但无法加载 EXE 程序集并生成以下异常:

TestManager.dll 中发生“System.IO.FileLoadException”类型的未处理异常

无法加载文件或程序集“testAssembly,Version=1.0.3836.39802,Culture=neutral,PublicKeyToken=null”或其依赖项之一。尝试使用修复程序加载无法验证的可执行文件(具有超过 2 个部分或 TLS 部分的 IAT。)

HRESULT 异常:0x80131019

TestManager.dll 本身是一个托管 dll,并在 CLI 中加载到另一个 CLR 进程中,并尝试将 EXE 程序集作为单独的进程加载,但失败并生成异常。

这可能是由于使用混合模式造成的。

Ste*_*ary 5

“当作为引用的程序集加载时,混合模式 C++ EXE 无法在内存中正确重定位。这就是运行时失败的原因。”

引用来自微软对Connect 上这个错误的回应,他们解释说他们不会修复它(对于罕见的情况来说太麻烦了)。