Solved

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

Posted on 2013-01-21
5
645 Views
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.
0
Comment
Question by:ToddBeaulieu
  • 3
  • 2
5 Comments
 
LVL 22

Accepted Solution

by:
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
0
 
LVL 16

Author Comment

by:ToddBeaulieu
ID: 38801637
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.
0
 
LVL 22

Expert Comment

by:p_davis
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.
0
 
LVL 16

Author Comment

by:ToddBeaulieu
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.
0
 
LVL 16

Author Closing Comment

by:ToddBeaulieu
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.
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

How to install Selenium IDE and loops for quick automated testing. Get Selenium IDE from http://seleniumhq.org (http://seleniumhq.org) Go to that link and select download selenium in the right hand columnThat will then direct you to their downlo…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
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…
The viewer will learn how to use and create keystrokes in Netbeans IDE 8.0 for Windows.

707 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

13 Experts available now in Live!

Get 1:1 Help Now