2015-06-23 62 views
0

我們的軟件有一個服務器組件,它暴露了幾個WCF端點。爲了給我們的用戶提供「訓練」模式,我們創建了一個動態DLL,它將呼叫包裝在我們的每個服務接口中。這個動態生成的DLL然後被加載到一個單獨的App域中。客戶端應用程序然後可以在「訓練」模式和「正常」模式之間切換,該模式影響客戶端用於通信的端點。追蹤DLL造成BadImageFormatException

我遇到的問題是我從在子App域中運行的動態生成的DLL中獲取BadImageFormatException。當我參考了我工作的公司中的另一個團隊所做的一些DLL時,這個問題就開始了,這表明它是導致問題的依賴DLL之一。我確信兩個解決方案中的每個項目都是使用x86標誌構建的。一些DLL是.NET 2.0,一些是.NET 4.0,但是應用程序本身在.NET 4.0 CLR下運行(它在App.Config文件中設置),所以它沒有.NET 2.0 DLL的問題。我發現令人困惑的是,所有引用的程序集都是在父應用程序域中運行的父可執行文件加載而沒有問題的,但只要運行在子應用程序域中的生成的DLL嘗試加載相同的程序集,就會得到BadImageFormatException。

我將不勝感激關於如何正確追蹤哪個DLL導致問題(因爲Fusion日誌似乎沒有給我任何信息)。我是否需要設置標誌以確保動態DLL和子App域是32位和.NET 4?任何其他建議或意見將不勝感激。

謝謝大家! Andrew S

+0

如果您確定所有東西都是x86,是否有任何依賴的DLL存在問題中,這可能會丟失。對於依賴關係,這個錯誤將會出現而不是DllNotFoundException,這使得它相當混亂。 – SteveFerg

回答

0

如果您正在動態生成DLL,請嘗試離開Program Files文件夾。在您的根驅動器上創建一個文件夾C:\並在那裏安裝您的軟件。

+0

感謝您的回覆Pabinator。出於測試目的,我從我的開發目錄運行軟件。 – user2141352