簡體   English   中英

Assembly.LoadFrom 有效,Assembly.Load 無效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM