2014-08-27 86 views
2

我剛剛在VS 2008中將3.5項目轉換爲Framework 4.5,該網站有兩個引用的項目(讓我們稱之爲Business和Reports)。移到.NET 4.5。 「錯誤

一切工作與在VS 2012的Web服務器的發展但是,當我把它在我的本地IIS *,我得到的

「無法加載文件或程序集‘報告’或它的一個依賴。試圖加載一個不正確的格式的程序。:

我看到在bin目錄中的報告的dll。我使用x86平臺編譯並回到AnyCPU,但它仍然無法工作。

(我沒有設置應用程序池的.NET框架版本4.0。)

編輯:誰能幫我discipher下面的消息?我看到HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Fusion。但什麼是「Fusion!EnableLog」?我什麼都看不到。

警告:裝配綁定日誌記錄已關閉。 要啓用程序集綁定失敗日誌記錄,請將註冊表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)設置爲1. 注意:與程序集綁定失敗日誌記錄相關的性能受損。 要關閉此功能,請刪除註冊表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。

+0

您是否嘗試過使用DependencyWalker進行調查? – Raghu 2014-08-27 09:07:24

+0

打開解決方案並按下右鍵單擊程序集(業務和報告)並打開屬性。更改程序集的版本,如果它們是.net 3.5 – 2014-08-27 09:09:22

+0

我確實將它們更改爲4.5 – user79284 2014-08-27 09:11:27

回答

1

可能有問題的DLL僅適用於32位(x86)版本。

重建您的程序,以x86構建爲目標。

然後在IIS中,右鍵單擊爲應用程序提供服務的應用程序池,然後單擊「高級設置」。從這裏,將「啓用32位應用程序」值設置爲「真」,然後回收應用程序池並重新啓動您的網站,並讓我知道你是否仍然有錯誤。

如果您不知道您的網站正在使用哪個應用程序池,請在「網站」下單擊您的網站,然後在「操作」窗格中選擇「基本設置」選項。從這裏您可以看到哪個應用程序池爲您的應用程序提供服務,如果需要,您可以更改應用程序池。應用程序池是通過IIS中「連接」窗格上的「應用程序池」選項進行管理的。

我認爲,如果您是從64位機器構建,那麼選擇「任何CPU」可能會導致64位構建,因此如果引用的DLL是針對x86構建的,那麼這可能是您爲什麼選擇正在收到錯誤消息。