如何获取EntityFramework NuGet包的PDB文件?

Cha*_*ion 30 entity-framework pdb entity-framework-6

我正在尝试在EntityFramework NuGet包(版本6.1.3)中调试StackOverflow.为了查看堆栈帧,我需要EntityFramework.DLL和EntityFramework.SqlServer.DLL的PDB文件.但是,我似乎无法让Visual Studio从MSFT符号源或从SymbolSource.org下载它(我可以获得其他系统PDB和NewtonSoft.json之类的东西).EF PDB可以在任何地方使用吗?

Mat*_*ius 21

现在有图片(因为它花了我一个小时的试用和失败)

  1. 从Jetbrains获取DotPeek(独立版)

  2. 打开DotPeek- > File- > Open- >浏览到您的项目bin文件夹并打开EntityFramework.dll

  3. Right mouse按钮EntityFramework然后选择Generate Pdb... 在此输入图像描述

在此输入图像描述

  1. 转到导出它的EntityFramework.pdb文件夹并打开文件夹(我知道对了!)然后深入挖掘,直到找到文件EntityFramework.pdb并将其复制到您的bin文件夹(旁边EntityFramework.dll).

  2. 转到Visual Studio- > DEBUG- > Options and Settings...- > Symbols然后将您的bin文件夹添加到Symbol file (.pdb) locations

在此输入图像描述

  1. 运行项目并祈祷这些断点变成成熟的红色....

编辑:它有时会开始在optimized模式下运行EF,这使得调试几乎无用,这是这个问题的一个重点 - 如果发生这种情况

  1. 转到Visual Studio- > Debug- > General- >(在最底部)Use Managed Compatibility Mode.勾选并运行项目(如果它被优化然后取消并运行,然后再次勾选并运行,然后......)

在此输入图像描述

  1. 要查看EF运行是否已经优化而不必等到达到断点,请转到Visual Studio- > Debug- > Windows- > Modules.然后当你运行解决方案模块(2)应该出现.单击它,发现EntityFramework.dll应该有一个列为Optimized(Yes= bad,No=你可以调试它).

在此输入图像描述

希望这能为您节省一些时间.

  • 对于仍在 dll 上设置优化的其他人,请确保选中“抑制模块加载时的 JIT 优化” (2认同)

Sea*_*kit 12

下载源代码: codeplex上的实体框架

下载按钮位于"源"选项卡上的子菜单中

下载后:

  • 构建解决方案/项目

  • 导航到bin目录NB:它不在正常位置,设置为"..\..\bin\Debug\".请参阅项目属性.

EntityFramework.pdb和EntityFramework.SqlServer.pdb都在那里.

也可以想到,它可以默认使用或更容易.

  • 我不敢相信这是这个问题的唯一答案 (2认同)