gpt4 book ai didi

c# - Assembly.LoadFile() 抛出关于缺少 list 的异常

转载 作者:太空狗 更新时间:2023-10-30 00:57:38 24 4
gpt4 key购买 nike

异常(exception)情况是:

模块应该包含程序集 list 。 (HRESULT 异常:0x80131018)

我在行中得到它:

Assembly lvAssembly = Assembly.LoadFile(aPathFileName); 

正在加载的文件是由不同的应用程序生成的插件。如果我将插件的目标框架版本从 4.0 更改为 3.5 并重新编译。插件加载正常。我不明白为什么 Assembly.LoadFile 方法会关心插件是为哪个版本的 .net 框架编译的。

将加载插件的应用程序的目标框架更改为 4.0 没有帮助。

最佳答案

您问题的第一部分是预期结果,CLR 版本 2 无法加载 .NET 4.0 程序集,元数据格式已更改。

最后一段比较难解释。它可能与使用 LoadFile() 有关,这是一种加载程序集的笨拙方式。一种可能的故障模式是您的插件程序集可能仍具有对 2.0 程序集的引用。当它引用另一个编译为针对早期框架的程序集时,这是很正常的。这通常由程序集加载程序静默解决,它只是将 2.0 引用替换为相应的 4.0 引用。

您可以使用 ildasm.exe 验证这一理论,在插件程序集上运行它并查看 .assembly 指令的 list 。版本号很容易看到,你会得到类似

.assembly extern mscorlib as mscorlib_2
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
.ver 2:0:0:0
}

总是喜欢 Assembly.LoadFrom()。

关于c# - Assembly.LoadFile() 抛出关于缺少 list 的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4671186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com