簡體   English   中英

CodeDom + Assembly.Load引發BadImageFormatException

[英]CodeDom + Assembly.Load throws a BadImageFormatException

我正在嘗試從給定的字節數組執行文件,這很好用:

byte[] bytes = File.ReadAllBytes(@"C:\Location\program.exe");
MessageBox.Show(bytes.Length) // The same size for both the VS compiled and CodeDom compiled application
Assembly assembly = Assembly.Load(bytes); //Throws exception when compiled with CodeDOM

該代碼可以在我使用Visual Studio生成的應用程序中編譯並正常運行。

但是,當我將這段代碼添加到使用CodeDOM生成的應用程序中時,它將引發BadImageException。

CodeDOM生成的應用程序可以很好地讀取字節,因為兩個版本都輸出相同的byte []長度。

我嘗試將目標框架從.NET 2.0更改為.NET 4.5,嘗試更改目標體系結構,但無法正常工作。

是什么導致此異常?

問題在於加載程序集的程序集體系結構和應用程序。

因此,如果應用程序使用X64構建並且嘗試使用X86加載程序集,則會產生問題,這也適用於相反的情況。

另一種情況是,使用Visual Studio構建應用程序時,默認選項為“任何CPU”。

在這種情況下,當進程為64位時,它將加載為64位;當應用程序為32位時,它將加載為32位。 我們限制這種方式,因為某些非托管資源在特殊環境下工作。

我在.net的Oracle客戶端中遇到了此類問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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