"mscorlib.pdb not loaded" yet the mscorlib.dll is NOT missing

I am running my application in VS2012 and I am getting a runtime error; enter image description here

When I look in the "Original Location" I see mscorlib.dll, but not mscorlib.pdb.

Why is this happening and how do I fix it?


Solution 1:

Goto Tools, Options, Debugging, General, Enable Just My Code

This will prevent the debugger from trying to launch on a Internal .NET Framework Assembly.

Solution 2:

Goto Tools, Options, Debugging, Symbols and set a cache location. Then hit load in the above and it will fetch the necesary symbols for you and store them in the cache location you provide.

Microsoft's compiler tools create symbols in separate files with a .pdb extension (program database). This allows them to create detached symbols for release binaries. With a symbol server, your IDE can fetch the symbol file matching the specific version of the DLL during debugging. You can configure this system for your own product binaries as well which can be very useful for post-mortem debugging any crashes on end-user machines.

See Microsoft's documentation for more details about using their public symbols.

Solution 3:

I had this issue when I was using a static variable, whose value is assigned off a static method.

So, whenever I ran the application, this line of code threw exception. If you place a debug point on this (like I did), you will notice the exception being thrown.

Solution 4:

The best Solution to solve this error is:

1: Open App.config file.

2: Paste this useLegacyV2RuntimeActivationPolicy="true" code in the startup tag.

3: Save it.

Now the error would disappear. Moreover see this Image. I have done this for you.

Solution 5:

This happened to me for a different reason: I had referenced an old version of NLog (2.0) and needed to reference version 4.0, instead.