【问题标题】:How can I get a PDB file for the EntityFramework NuGet package?如何获取 EntityFramework NuGet 包的 PDB 文件?
【发布时间】:2015-11-13 07:24:19
【问题描述】:

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

【问题讨论】:

  • 这些答案之一对您有用吗?

标签: entity-framework entity-framework-6 pdb


【解决方案1】:

现在有图片(因为我花了大约一个小时的时间尝试并失败了)

  1. 获取DotPeek from Jetbrains(单机版)

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

  3. 鼠标右键按钮EntityFramework 然后选择Generate Pdb...

  1. 转到您导出它的文件夹并打开 EntityFramework.pdb 文件夹(我知道是对的!)然后深入挖掘直到找到一个文件 EntityFramework.pdb 并将其复制到您的 bin 文件夹(在 @987654342 旁边@)。

  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 应该有优化的列(Yes = bad, No = 你可以调试它)。

希望这可以为您节省一些时间。

【讨论】:

  • 很好的解释@Matas!谢谢!
  • DotPeek 似乎没有将自己与 VS2017 挂钩,但您可以使用随附的 GUI 执行相同的过程。
  • 对于仍然在 dll 上设置优化的其他人,请确保选中 Supress JIT Optomization on Module load
  • 如果您已经将.pdb 放入您的bin 目录,是否真的需要执行第5 步?我的意思是,如果你硬编码它,你将不得不为每个项目更改它......
【解决方案2】:

下载源代码: entity framework on codeplex

下载按钮位于“源”选项卡的子菜单中

下载后:

  • 构建解决方案/项目

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

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

还想,它会默认可用或更容易。

【讨论】:

  • 我不敢相信这是这个问题的唯一答案
  • 我很惊讶我没有得到任何信任,#justsaying ;-) 完全同意……不得不挖掘才能得到这个……
  • 对这个问题的独家(尽管不令人满意)答案
  • 请注意:我自己不需要 pdb 文件。我希望获得有关我的异常的更多信息。但是信息已经在那里了。我只需要在 Visual Studio 的局部变量窗口中检查 $exception 变量。
  • 这个答案的问题在于它必须与您在项目中运行的版本完全相同。而且 EF 并不总是有一个合理的版本控制方案
【解决方案3】:

其中一种方法是使用 dotpeek 作为符号服务器(加载实体框架 dll 并添加从 dotpeek 设置复制的 dotpeek serer 地址) - 这种方法有什么好处,它会自动生成匹配使用的 dll 版本的 pdb,什么不是很好 - 它不会包含来自源代码等的原始 cmets。

【讨论】:

  • 这也适用于没有符号服务器模式。您可以为程序集生成 pdb 文件,并将 Visual Studio 指向 dotPeek 创建的文件夹。
猜你喜欢
  • 1970-01-01
  • 2016-10-15
  • 2017-06-02
  • 1970-01-01
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
相关资源
最近更新 更多