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 の別の部分を見つけられないということです。

この問題は、3 つのビルド サーバーすべてで発生します。

ローカルでは、問題なく動作します。

すべてのシステム (ローカルおよびリモート) は、すべての 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 ログを使用して、実際に何がロードされているかを確認します。たとえば、1 つのアセンブリを 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 に答える