2012-06-06 37 views
1

當我們的TFS構建服務器上運行我們的單元測試,我們得到這個錯誤:system.missingMethodException而在NInject

SetUp : System.MissingMethodException : Method not found: 'Void 
Ninject.ModuleLoadExtensions.Load(Ninject.IKernel, System.Reflection.Assembly[])'. 
at Ninject.Extensions.Conventions.AssemblyScanner.Process(
Assembly assembly, IKernel kernel) 

其中,據我所知,是說NInject的一個部分不能找到Ninject的另一部分。

這個問題出現在我們所有的三個構建服務器上。

本地,它工作正常。

所有系統(本地&遠程)出現使用所有Ninject組件的正確版本是(以及所有其他應用程序)

任何想法?

更新:哎呀以爲我在原始郵件中提到了這一點:

Ninject ver 2.2.0.0 
Ninject.Extensions.Conventions ver 2.2.0.5 
+0

你使用哪個版本的Ninject和Ninject.Extensions.Conventions? – nemesv

回答

0

好的,我們知道了。

TFS構建服務器喜歡將所有DLL放在同一個文件夾中。這會導致一個問題,如果你有.Net和Silverlight程序集具有相同的名稱(這是Ninject.dll的情況下)

解決方案是更改Silverlight項目屬性頁上的「輸出路徑」從「標準」bin\Release\「到」bin\Release\Silverlight「之類的內容,因此DLL保持分離。

3

Moste可能你使用不同版本的Ninject.dll和Nnject.Extensions.Conventions的。例如Ninject 3.0.0和約定2.2.0

MissingMethod異常是一個部署問題。使用Fusion日誌查看真正加載的內容。例如,一個程序集可以在GAC中。

+0

如果我正在閱讀Fusion日誌的權利(BTW,感謝您的提示,以前從未知道Fusion日誌),它正在從項目BIN文件夾中加載DLL,並且它們是最新的2.2.0.0版本。 –

相關問題