2014-03-31 41 views
6

我在現有項目中添加了一個項目。當我運行所有的單元測試與MSTest的亞軍,我碰到下面的錯誤上了幾個測試:System.IO.FileLoadException:無法加載文件或程序集Log4net

消息:試驗方法soandso拋出異常: System.IO.FileLoadException:無法加載文件或程序集「的log4net ,Version 1.2.12.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a'或它的一個依賴關係。定位的程序集清單定義與程序集引用不匹配。 (來自HRESULT的例外:0x80131040)

我知道其他人也有同樣的問題,並有關於此主題的其他問題和答案。但我嘗試了很多東西,但沒有任何幫助。 我們使用的log4net版本是1.2.13.0。

我使用FUSLOGVW.exe檢查了綁定錯誤。 log4net顯示出已添加的程序集和一些未知程序集。 程序集中log4net的引用顯示了與NuGet一起添加的版本1.2.13.0。所以它可能是一個相關的組件,正在造成所有這些麻煩。 我試着將log4net改回到版本1.2.12.0,但我仍然得到相同的錯誤信息。

當我使用MSTest testrunner運行所有測試時,會顯示這些錯誤。當我只運行失敗的測試時,他們通過。當我單獨運行它們時,它們也會通過。 我嘗試了綁定重定向,但是我爲測試的組件做了測試,而不是測試組件。我不知道如何做一個測試程序集 - 沒有配置。 當我使用Resharper測試運行器運行測試時,它們也通過(但其他測試失敗)。 TFS Build服務器運行MSTest-runner,因此我需要使用MSTest。

有誰知道我可以如何解決這個問題?

+0

嘗試調查log4net的示例項目 –

+2

刪除對log4net的引用並向適當版本的log4net添加新引用,或將引用的「特定版本」屬性更改爲false。 –

+0

這是我嘗試的第一件事情之一。我使用1.2.13.0,1.2.12.0和帶有舊簽名的log​​4net 1.2.13.0來試用它。特定版本屬性設置爲false。 – tobre

回答

10

找到了肇事者。就像我懷疑的那樣,一個依賴程序集引用了log4net 1.2.12.0。用於發現的工具是dotPeek。幸運的是,我們確實有相關程序集的源代碼,我們可以將其更改爲引用最新的log4net。這解決了這個問題。

因此,如果任何人有類似的問題,使用dotPeek或類似的工具來通過相關的程序集來找出它引用的程序集的版本。

相關問題