[英]Assembly.LoadFrom works, Assembly.Load does not
我正在嘗試使用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
工作?
與Assembly.LoadFrom(string)
不同,Assmebly.Load 在反映Assmebly.Load
可執行文件時可能會拋出BadImageException
。 要解決該問題,您必須在鏈接時使用/fixed:no
。 這是Msdn的一段:
考慮 C++ 可執行文件可能會引發 BadImageFormatException。 這很可能是由 C++ 編譯器從可執行文件中剝離重定位地址或 .reloc 部分引起的。 要保留 C++ 可執行文件的 .reloc 地址,請在鏈接時指定 /fixed:no。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.