web-dev-qa-db-ja.com

Visual Studioの単体テストでSystem.TypeLoadExceptionの原因は何ですか?

C#.NETクラスライブラリMyClassLibraryがあり、これで問題なくコンパイルできます。私はそのための単体テストプロジェクトを作成しようとしています(Visual Studio 2010でVisual Studio単体テストフレームワークを使用)。クラスライブラリには大きなクラスがありますが、最も単純なクラスに対して最も単純なテストでさえ実行すると、次の例外が発生します。

テストメソッドMyClassLibraryTest.MyClassLibraryTests.MySimpleClassTestは例外をスローしました:System.TypeLoadException:アセンブリ 'MyClassLibrary、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null'からタイプ 'MyClassLibrary.MySimpleClass'をロードできませんでした。

私が扱っているプロジェクトはすべて同じソリューションにあり、すべてが.NET 4.0用にコンパイルされています。これらはすべてWindows 7 64ビットマシン上にあります。

奇妙な部分があります:テストを「Run」すると、上記のエラーが発生します。しかし、テストを「Debug」すると、正常に実行されます。どうして?

26
Jay Sullivan

MyClassLibraryアセンブリは、構成マネージャーでx86モードに設定されました。これをx64に変更すると修正されました。 Visual Studioがこれを検出し、あまり目立たないエラーとして報告することを本当に望んでいます。

10
Jay Sullivan

私は1時間、これに頭を打ちました。問題は、Something.exeという名前のコマンドラインプロジェクトがあり、Something.dllという名前のクラスライブラリプロジェクトを使用していたことです。

33
Amir Abiri

私にも起こった。私の場合、テストされたプロジェクトと単体テストプロジェクトの名前が同じであるため、問題が発生しました。この場合も、プロジェクトのいずれかの名前を変更し、出力ファイル名を変更して修正します。

25
Pavel Melnikov

私にも起こった。これは、x64、リリース、およびx86モード用のビルドに関連しています。私の場合、ビン内のフォルダー(参照アセンブリと単体テストのデバッグ/リリース/ x86)を削除し、単体テストを再実行しました。 VS2010は、出力ウィンドウでエラーをいくらか報告しました。それで解決しました。

4
kepung

今日、これを通過しましたが、私は修正を残します。

仕様:VS 2013/.Net 4.0

解決策:[メニュー]> [テスト]> [テスト設定]> [デフォルトプロセッサアーキテクチャ]> [X64]に移動します。

enter image description here

2
Tiago Duarte

Treyと同様の問題がありましたが、BizTalkの代わりに、GAC展開も使用するSharePointソリューションがあります。 GACには古いアセンブリがありました。ソリューションを撤回してGACアセンブリを削除すると、テストに合格しました。

1
Mika Rinkinen

ここでも同じメッセージですが、テストをデバッグすることもできませんでした。

私の場合、テストしていたDLLがGACに展開されました(BizTalkの要件)。新しいクラスを作成してテストしていましたが、テスト対象のクラスを追加してからDLLを再度GACしませんでした。

1
Trey Mack

これが同じエラーで他の人を助ける場合(リリースvsデバッグに関する質問に直接答えないことを理解しています);既存のプロジェクトと競合する名前空間を持つレガシープロジェクトにマージしたため、名前を変更しました。そのプロジェクトからフォームを作成しようとすると、このエラーが発生しました。

プラットフォームターゲットが同じであることを確認し、。\ bin \ディレクトリを削除してクリーンな再構築を保証し、マージされたプロジェクトへの参照を削除して再追加しましたが、それでも同じエラーです。

最終的に(!)プロジェクトのプロパティでアセンブリ名を確認し(プロジェクトを右クリックして、「プロパティ」を選択し、「アプリケーション」タブを選択します)、デフォルトの名前空間に一致するように変更しました。

1
MartinMlima

同じメインプロジェクト名のテストプロジェクトを追加しようとしていたとき、それは私に起こりました。

私の主なプロジェクト名は:Calculator.OperationsManagerテストプロジェクト名は:Calculator.OperationsManager

テストプロジェクト名をCalculator.OperationsManager.Testに変更しましたが、すべてうまくいきました。

1
Wahap

同じ問題が発生しました。念のため、それが誰かを助ける-私は、nugetパッケージNUnit3TestAdapterをバージョン3.13.0から3.11.2にダウングレードすることで、なんとか動作させることができました。

詳細については、こちらをご覧ください- https://github.com/nunit/nunit-console/issues/424

0
BUDDHIKA

VS 2013でNUnit 3を使用してこのエラーが発生しました。見つからなかった型を含むアセンブリのテストプロジェクトでアセンブリ参照を削除して解決し、参照を追加し直しました。

0
JamesFaix

誰かがこれを必要とする場合に備えて:Visual Studioでテストプロジェクトを作成し、Visual Studioから参照として "System.Web"を追加するように繰り返し求められても、なぜクラスが見つからないのか疑問に思いました。

私はそれをしましたが、エラーが発生し続けました。私にとっての問題は簡単でした(前もって確認しておくべきでした)。NET Coreプロジェクトを作成したテンプレートからテストプロジェクトを作成していました。 .NET Framework 4.6.1に変更し、参照として「System.Web」を追加すると、すべて正常に機能しました。

0
A. Hoffmann