在其中一个项目中,我正在使用以下方法将代码动态加载到 .net DLL 中到完全受信任的程序集中: Assembly.LoadFrom 功能。到目前为止,它已经 100% 正常运行,没有出现任何问题。

我现在有一个使用 /clr:pure 编译的 Visual C++ DLL,需要使用上面的内容进行加载 Assembly.LoadFrom. 。当我这样做时,我得到了 BadImageFormatException,这真的很奇怪。

在 Visual C++ 项目中,有 3 种类型的 CLR 编译选项:

/clr

/clr:纯

/clr:安全

根据给我的说明,它需要在 /clr:pure 下编译。我的问题是使用 /clr:pure 抛出异常。如果我将其更改为 /clr 它也会引发异常。如果我将其更改为 /clr:safe ,它会加载而不会引发异常(这是我的测试结束的地方)。

所以我想这实际上是一个由两部分组成的问题:

1)为什么 /clr:safe 可以工作,而其他两个则不行?

2)如何让它与/clr一起工作?

提前致谢!

有帮助吗?

解决方案

经过研究该方法不能加载混合程序集。它们只能是纯 MSIL。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top