Why can't Visual Studio locate the PDB files for referenced assemblies?

Posted on 2013-01-21
Last Modified: 2013-01-21
Does anyone know how VS finds symbol files for referenced assemblies?

I have a solution with a number of projects, including a Silverlight application and host website.

I have an EXT folder in the structure, from which I reference some assemblies given to me from another team in the company. In that same folder are the corresponding PDBs.

The app works fine, but the symbol files for the referenced assemblies are not loaded. Says it can't find them in the modules list. Now this was ABSOLUTELY working on Friday, so I have no idea why it's not today.

First and foremost in my mind is why VS doesn't look in the same folder that the referenced assembly is located. It's right there! Also, the PDB files are in the output folder of the SL project that references them.

If I run DUMPBIN on the assembly, it lists a directory that I don't have. It's obviously a build directory from the other team. I see that directory being searched in the "Symbol load information", along with the usual windows directories, but not the directory where the referenced DLL came from.
Question by:ToddBeaulieu
  • 3
  • 2
LVL 22

Accepted Solution

p_davis earned 500 total points
ID: 38801619
you have to load symbol paths in visual studio and point to where the pdb files exist. what version of VS do you have? It should be under debug->settings and options->debugging->symbols
LVL 16

Author Comment

ID: 38801637

That seems so "general". If I have 20 solutions I'd have to add the ext folder into this symbol location list for each solution, right? And what about when I have different versions of common libraries in use from different solutions?

My instinct is that I want a project or solution-level hook for this.
LVL 22

Expert Comment

ID: 38801659
you don't have to load it for each solution.

with different versions of common libraries for different solutions...I would say simplify if you can. That sounds like a hard scenario to maintain. Just an opinion.

either way... this is the only solution I know of for symbols. Maybe someone else will have another suggestion. I would be interested to hear it.
LVL 16

Author Comment

ID: 38801722
Well, I don't go out of my way to maintain different versions of common assemblies, but I do maintain the "current" binaries of shared resources in TFS and branch those into the EXT folder of solutions referencing them. This allows me to push updates only when I'm ready to, instead of immediately forcing them onto unsuspecting applications. This works great.

With the above system, I'd need to add each branch target to the list if I wanted to debug into the shared library. It's either that or maintain "master PDB locations" for each pushed version, which would be awful, as well.

Frankly, I've thought much about symbols, surely because I've never had to.

I just discovered some details about having a local DEVPATH folder for PDBs, as well as a symbol server. Both seem to suffer from the same problem - at least, I think they do. I assume they'd entail having the latest PDB file.

Actually, I guess if I'm debugging an application it most likely means I'm going to release a new version, in which case I could and should be upgrading to the latest referenced assembly anyway. I could use the DEVPATH approach in that case, pointing it to the BIN folder of that shared project.
LVL 16

Author Closing Comment

ID: 38801998
I don't know if it's the best approach, but I created a symbols folder higher up in my development folder structure and added that location into VS, as you suggested.

I copied the PDBs into that folder and I'm good to go now. This introduces another concept to maintain in my TFS structure and development environment for each developer. Not sure how this will play out long-term.

Thanks for the help. Appreciated.

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
The viewer will learn how to use NetBeans IDE 8.0 for Windows to connect to a MySQL database. Open Services Panel: Create a new connection using New Connection Wizard: Create a test database called eetutorial: Create a new test tabel called ee…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now