在我们的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
答案 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保持独立。