Link to home
Start Free TrialLog in
Avatar of ToddBeaulieu
ToddBeaulieuFlag for United States of America

asked on

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

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.
ASKER CERTIFIED SOLUTION
Avatar of p_davis
p_davis

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of ToddBeaulieu

ASKER

2012.

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.
Avatar of p_davis
p_davis

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.
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.
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.