我正在尝试在调试时进入/进入以下代码行:
namespace ViewModels
{
public abstract class CustomFormViewModel : INotifyPropertyChanged, IDisposable
{
private DBContextModels.Models.DbBuildingContext _dbContext;
public CustomFormViewModel()
{
...
// no symbols loaded, cannot step into
_dbContext = new DBContextModels.Models.DbBuildingContext();
}
}
}
DbBuildingContext
是在程序集 DbContextModels.dll 中定义的,该程序集没有源文件或符号文件,因此,我尝试使用生成的符号进入其反编译源文件。
单步执行上述语句没有任何效果,只是单步执行了,在DbBuildingContext
构造函数中设置一个断点会发出“未加载任何符号” 通知。
使用ReSharper,我为 DbContextModels.dll 生成了符号文件:
并将其存储在此处
"xxx\DbContextModels.pdb\E3D17590C9F44E73BC95AC40AB59EC891\DbContextModels.pdb"
“显示PDB内容” 显示
<?xml version="1.0" encoding="utf-8"?>
<Pdb Name="DbContextModels"
Path="xxx\DbContextModels.pdb\E3D17590C9F44E73BC95AC40AB59EC891\DbContextModels.pdb"
AssemblyPath="xxx\DbContextModels.dll"
SignatureFromAssembly="e3d17590-c9f4-4e73-bc95-ac40ab59ec89 "
PdbFileFromAssembly="xxx\notme\xxx\DbContextModels\obj\Debug\DbContextModels.pdb ">
<UserEntryPoint>null</UserEntryPoint>
...
除UserEntryPoint
为 null 并且PdbFileFromAssembly
指向构建程序集的用户的本地路径之外,其他所有内容都看起来正确。 UserEntryPoint
是否应具有有效值,并且PdbFileFromAssembly
是否应与Path
匹配?
注意:E3D17590C9F44E73BC95AC40AB59EC891
和e3d17590-c9f4-4e73-bc95-ac40ab59ec89
几乎相同。
我配置了调试器选项来为该程序集加载符号:
我还确保清除了ReSharper缓存,并确保在Assembly Explorer中显示的程序集(从中生成符号文件)指向与调试选项中“已加载的模块”路径相同的位置。