Assembly.LoadFrom起作用,Assembly.Load不起作用

问题描述 投票:0回答:1

[我试图使用Assembly.Load加载文件,但出现BadImageException,但是如果我尝试使用Assembly.LoadFrom加载完全相同的程序集,则可以正常工作。

// this works.
var asm1 = Assembly.LoadFrom(path);

// this throws an exception
var ba = File.ReadAllBytes(path);
var asm2 = Assembly.Load(ba);

从上面的代码中可以看到,程序集是完全相同的,但是它适用于Assembly.LoadFrom,但不适用于Assembly.Load

可能是什么原因?如何使Assembly.Load工作?

c# .net-assembly
1个回答
2
投票

Assmebly.Load可能会在思考C ++可执行文件时抛出Assmebly.Load,与BadImageException不同。为了解决该问题,您必须在链接时使用Assembly.LoadFrom(string)。这是Msdn的段落:

考虑C ++可执行文件可能会抛出BadImageFormatException。这很可能是由C ++引起的编译器从中剥离重定位地址或.reloc节您的可执行文件。为您的C ++保留.reloc地址可执行文件,在链接时指定/ fixed:no。

© www.soinside.com 2019 - 2024. All rights reserved.