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?
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.
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.
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.
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.
Take a look into inner exception. This often happens when static constructor threw exception.
精彩评论