Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I troubleshoot : System.TypeLoadException?

Can you show me a way to troubleshoot System.TypeLoadException ?

I am having this exception for an existing project in my solution which I reference from a unit test project in the same solution.

This exeption is thrown when I run my unit tests. They fail because of this exception:

Details:

Test method MyErrorHandler.Test.MyTest.Parse_RecievesValidMessage_ReturnsArray threw exception: System.TypeLoadException: Could not load type 'MyTestNameSpace' from assembly 'MyTestAssemblyName.Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=Somenumber.

What should I check or where should I start to investigate?

like image 418
pencilCake Avatar asked Sep 20 '11 15:09

pencilCake


4 Answers

One situation where this exception is thrown is if the executing assembly has the same name as the assembly with the given type. For example, if you are running MyApp.exe and the type is in MyApp.dll, the CLR will assume that the type should be in MyApp.exe. A solution would be to rename one of those assemblies.

like image 77
Mark Cidade Avatar answered Nov 17 '22 01:11

Mark Cidade


In the exception message, or maybe in an InnerException property, you might find what was the requested type, with the fully qualified name, version, assembly. Check if the given assembly is reachable from the application directory. Reachable meaning in the application directory or in the private probing path of the application.

EDIT : also check that satellite assemblies (referenced by the assembly that the type loader fails loading) are reachable.

like image 37
Seb Avatar answered Nov 17 '22 01:11

Seb


You could try switching on the 'Break when an exception is thrown' from Debug -> Tools -> Exceptions and click all the check boxes in the Thrown column. When you re-run your test you should be able to see exactly where this exception is being thrown.

like image 2
Winston Avatar answered Nov 17 '22 02:11

Winston


Well... It was totally my bad.

I gave a wrong assembly name which was resulting a missing DLL in the bin folder.

Thanks to my mate, he pointed me to check the bin folder. And after checking the added reference's "path" I have noticed that it is looking to a completely different place.

like image 1
pencilCake Avatar answered Nov 17 '22 00:11

pencilCake