2011-03-17 29 views
0

我有一些來自System.AddIn的插件。但在運行時AddInStore.Rebuild,獲取BadImageFormatException

string[] warnings = AddInStore.Rebuild(addInRoot); 

然後我得到一個警告字符串返回:

的文件不是有效的二進制文件: d:\ AK \ AS \ ConverterModule \輸出\加載項\ CompositeFileZip \ 7z.dll 文件名: d:\ AK \ AS \ ConverterModule \輸出\加載項\ COMPOSI ...

的7z.dll不是插件組件,但的7z文件的CompositeFileZip插件使用。我無法弄清楚重建功能到底在做什麼。它試圖添加7z.dll作爲插件嗎?

回答

5

我不熟悉System.AddIn或7z組件,但BadImageFormatException的一個非常常見的原因是試圖加載標記爲64位(或依賴於本機64位.dll)的程序集,在32位系統上,反之亦然。

檢查您的7z.dll及其依賴關係是否爲與您看到BadImageFormatException的系統相同的架構構建。您可以從Visual Studio命令提示符下傾頭的7z.dll和尋找機器架構做到這一點:

 
    C:\Program Files\7-Zip>dumpbin /headers 7z.dll | findstr /i machine 
      8664 machine (x64) 
+1

...或加載一個組件不是一個.NET程序集。 – adrianbanks 2011-03-17 13:47:45

+0

我得到你有的線。然後我切換到爲32位構建的7z.dll,但BadImageFormatException仍然存在。這些項目是爲「任何CPU」構建的。 – 2011-03-17 14:20:47

+0

無賴。如果沒有其他建議進來並且是我,我會啓用.NET Framework源代碼調試,並且在引發異常時將調試器設置爲中斷。然後你可以在引發BadImageFormatException的地方看到細節。有關詳細信息,請參閱[此鏈接](http://blogs.msdn.com/b/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx)。關於啓用.NET FW源代碼調試。一旦發生異常,立即中斷,轉到** Debug | **中的異常**,然後檢查** Common Language Runtime Exceptions **旁邊的** Thrown **複選框。 – 2011-03-17 14:52:34

相關問題