NInject中的System.MissingMethodException

时间:2012-06-06 21:02:55

标签: c# unit-testing tfs ninject

在我们的TFS构建服务器上运行单元测试时,我们收到此错误:

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程序集的正确版本(以及应用程序中的所有其他程序)

有什么想法吗?

更新:Ooops认为我在原始邮件中提到了这一点:

Ninject ver 2.2.0.0
Ninject.Extensions.Conventions  ver 2.2.0.5

2 个答案:

答案 0 :(得分:3)

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

MissingMethod异常是部署问题。使用Fusion日志检查实际加载的内容。例如,一个组装可以在GAC中。

答案 1 :(得分:0)

好的,我们想通了。

TFS构建服务器喜欢将所有DLL放在同一个文件夹中。如果您同时具有相同名称的.Net和Silverlight程序集(例如Ninject.dll的情况),则会导致问题

解决方案是改变输出路径"关于Silverlight项目'属性页面(在" Build"标签下),来自标准" bin\Release\"类似于" bin\Release\Silverlight"因此DLL保持独立。