Я пытаюсь отладить StackOverflow в пакете EntityFramework NuGet (версия 6.1.3). Чтобы увидеть кадры стека, мне нужен файл PDB для EntityFramework.DLL и EntityFramework.SqlServer.DLL. Однако я не могу заставить Visual Studio загружать это из источников символов MSFT или из SymbolSource.org(я могу получить другие системные PDB и такие вещи, как NewtonSoft.json). Доступны ли PDB EF в любом месте?
Как я могу получить PDB файл для пакета EntityFramework NuGet?
Ответ 1
Теперь с картинками (так как мне понадобилось около часа проб и ошибок)
-
Получить DotPeek от Jetbrains (автономная версия)
-
Откройте
DotPeek
→File
→Open
→ перейдите в папку проектаbin
и откройтеEntityFramework.dll
-
Right mouse на
EntityFramework
, затем выберитеGenerate Pdb...
-
Перейдите в папку, в которую вы ее экспортировали, и откройте папку
EntityFramework.pdb
(я знаю правильно!), а затем углубитесь, пока не найдете файлEntityFramework.pdb
и скопируйте его в папкуbin
(рядом сEntityFramework.dll
). -
Перейдите к
Visual Studio
→DEBUG
→Options and Settings...
→Symbols
, затем добавьте свою папкуbin
вSymbol file (.pdb) locations
- Запустите проект и помолитесь, чтобы эти точки останова стали зрелыми.
Изменить: Иногда он запускает EF в режиме optimized
, что делает отладочную работу практически бесполезной, что является целым рядом с этим вопросом - если это произойдет
- Перейдите к
Visual Studio
→DEBUG
→General
→ (в самом низу)Use Managed Compatibility Mode
. Tick и Run project (если он оптимизирован, затем отключите и запустите, затем снова нажмите и запустите, затем...)
- Чтобы убедиться, что
EF
работает оптимизирован без необходимости ждать, пока он не достигнет точки останова Перейти кVisual Studio
→DEBUG
→Windows
→Modules
. Затем, когда вы запускаете модули решений (2), должны появиться. Щелкните по нему и найдитеEntityFramework.dll
должен быть столбец с надписью Optimized (Yes
= bad,No
= вы можете его отладить).
Надеюсь, это сэкономит вам некоторое время.
Ответ 2
Загрузите исходный код: структура сущности на codeplex
Кнопка загрузки находится в подменю на вкладке "Источник"
После загрузки:
-
Построить решение/проект
-
Перейдите в каталог bin NB: он не находится в обычном месте, его значение установлено на
"..\..\bin\Debug\"
. См. Свойства проекта.
Здесь есть EntityFramework.pdb и EntityFramework.SqlServer.pdb.
Также подумал бы, что он будет доступен по умолчанию или проще.
Ответ 3
Один из способов - использовать dotpeek в качестве сервера символов (загрузить dll framework для платформы load add и добавить dotpeek serer адрес, скопированный из настроек dotpeek) - что отлично подходит для этого подхода, что он сгенерировал pdb-совместимое использование версии dll автоматически, что не так здорово - он не будет содержать исходные комментарии из исходного кода и т.д.