[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now


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

Posted on 2013-01-21
Medium Priority
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 2000 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

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

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

Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
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 synchronize PHP projects with a remote server in NetBeans IDE 8.0 for Windows.
Suggested Courses
Course of the Month18 days, 23 hours left to enroll

834 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