我有一個最近修改過的項目。該項目使用.NET編寫,並針對x64機器進行編譯。我有一個DataEntities模型,我們已經建立了與我們的數據庫進行交互的模型。但是,當我們嘗試連接到實體框架模型時,會出現錯誤。實體框架與Interop.SHDocVw有什麼關係?
實體框架EDMX文件名爲DataCentral.edmx。使用這個文件,我們試圖運行的代碼連接到我們的實例是非常簡單的。
string cs = CSManager.GetConnectionString();
DataCentralEntities ctx = new DataCentralEntities(cs);
當我們運行這兩條線,它崩潰在與的內-內部異常的第二行:
Could not load file or assembly 'Interop.SHDocVw, Version=1.1.0.0,
Culture=neutral, PublicKeyToken=null' or one of its dependencies.
An attempt was made to load a program with an incorrect format.
當我們運行它作爲86(這是不可能的,從長遠 - 其他原因),它運行得很好。我沒有檢查連接字符串,並且格式正確。
我的問題是:我不我的任何新的變化使用SHDOCVW。事實上,我直到遇到這個錯誤才聽說過它。這可能導致它在這裏嘔吐?我錯過了什麼?
UPDATE
我們發現,可能建於對周圍的.NET 2.0的時間的一種形式。 (甚至可能更早)。它通過ShDocVw庫創建了對Web瀏覽器控件(而不是官方WebBrowser控件)的引用。顯然,在官方控制出現之前,這是一種將Web瀏覽器嵌入到應用程序中的相當常見的方式。
我們升級這種形式使用官方WebBrowser控件,並在我們的項目中刪除的Shdocvw.dll所有引用,一切現在正在爲預期的,即使是在64位。
我仍然不明白的是爲什麼實體框架在該行崩潰時SHDOCVW.DLL一提的是在您的項目。那部分對我來說毫無意義。但是,我們現在回來了。