我在C#上相當新,所以如果我誤解了某些東西,請耐心等待。System.BadImageFormatException使用.NET 2.0
我有我的工作的相當老的應用程序,允許你導入的DLL做某些自動執行的任務。所有的老程序員都離開了幾年,我不支持聯繫這個應用程序。我創建了一個DLL在Visual Studio 2013使用.NET 2.0框架,並試圖導入它時,我收到此錯誤信息:
The format of the file 'MyDll.dll' is invalid. Type:System.BadImageFormatException
Source: mscorlib Stack Trace: at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Boolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, Assembly locationHint, StackCrawlMark& stackMark)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Boolean stringized, Evidence assemblySecurity, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at Applications.frmApplications.loadFields()
at Applications.frmApplications.fillMenuItem()
at Applications.frmApplications.ugApplications_AfterSelectChange(Object sender, AfterSelectChangeEventArgs e)
at Infragistics.Win.UltraWinGrid.UltraGrid.OnAfterSelectChange(AfterSelectChangeEventArgs e)
at Infragistics.Win.UltraWinGrid.UltraGrid.FireEvent(GridEventIds id, EventArgs e)
at Infragistics.Win.UltraWinGrid.UltraGrid.SelectNewSelection(Type type, Selected selected)
at Infragistics.Win.UltraWinGrid.UltraGrid.InternalSelectItem(ISelectableItem item, Boolean clearExistingSelection, Boolean select)
at Infragistics.Win.UltraWinGrid.UltraGridRow.set_Selected(Boolean value)
at Applications.frmApplications.searchForApplication()
我在網上查找這個錯誤的基本consensious是我使用了錯誤的。 NET框架版本。我已經使用.NET Reflector來查看工作中使用的較老的dll的版本,並且它的版本爲1.1.12.30886 。現在我的問題是有另一種方式繞過這個錯誤,或者只能導入.NET版本1.1?如果是的話,是否有任何方法可以將我的dll更改爲1.1框架,因爲我看到它過去的生命週期並且不再受支持,而且我也沒有看到在Visual Studio中安裝它的方法。
可能是一個64/32位的問題。 –
我也這麼認爲,但是我將它設置爲任何cpu。只是爲了笑笑,我試圖切換到64/32,並給出了相同的錯誤。 – Superdoo
你確定這是目標框架的版本,而不是dll的?無論如何,.NET 1.1是非常古老的。從1.1到2.0的變化影響了IL和運行時本身。 –