1

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

有任何想法吗?

更新:哎呀,我以为我在原始消息中提到了这一点:

Ninject ver 2.2.0.0
Ninject.Extensions.Conventions  ver 2.2.0.5
4

2 回答 2

4

您最有可能使用不同版本的 Ninject.dll 和 Nnject.Extensions.Conventions。例如 Ninject 3.0.0 和 Conventions 2.2.0

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

于 2012-06-06T22:18:31.503 回答
0

好的,我们想通了。

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

解决方案是将 Silverlight 项目的属性页面(在“构建”选项卡下)上的“输出路径”从标准的“ bin\Release\”更改为“ bin\Release\Silverlight”,以便 DLL 保持独立。

于 2012-06-07T17:02:08.227 回答