LINQPad中无法跳转定义时,如何查找User.LocationDistrict的来源?
如何在LINQPad中查找
LINQPad.User.LocationDistrict的定义来源 遇到这种“转到定义”灰掉的情况,别着急,试试下面这些方法来定位这个类型的出处:
用LINQPad内置搜索功能:按下
Ctrl+F打开搜索框,输入LocationDistrict,勾选“搜索所有引用”或者“搜索整个解决方案”(如果你用的是LINQPad的解决方案模式)。搜索结果里如果有定义的地方,会直接显示对应的查询或程序集位置。查看查询的引用与类型浏览器:
- 按下
F4打开查询属性面板; - 切换到“类型浏览器”标签页,在搜索框输入
LINQPad.User.LocationDistrict,这里会显示该类型的元数据信息,包括它所属的程序集、命名空间,甚至是字段/方法定义; - 同时检查“引用”标签页里的所有程序集,右键可疑的程序集选择“查看程序集”,在弹出的窗口里搜索这个类型,就能找到它在程序集中的位置。
- 按下
通过代码输出类型的位置信息:在你的查询里加几行调试代码,运行后就能拿到关键线索:
// 输出类型所在程序集的本地路径 Console.WriteLine(typeof(LocationDistrict).Assembly.Location); // 输出程序集的名称和版本 Console.WriteLine(typeof(LocationDistrict).Assembly.GetName());拿到路径后,你可以用反编译工具(比如ILSpy、dnSpy)打开对应的dll文件,直接查看
LocationDistrict的完整定义。检查是否是LINQPad自动生成的实体类:如果你当前查询连接了数据库(比如用LINQ to SQL、EF Core),
LocationDistrict很可能是LINQPad自动从数据库表映射生成的实体类型。这种情况下,你可以查看查询的数据源配置,或者直接在数据库里找对应的LocationDistrict表来确认。排查其他查询中的定义:
LINQPad.User命名空间下的类型有时候是在其他查询中定义的——比如你有一个作为“库查询”的脚本,里面定义了这个类,当前查询引用了它。你可以在LINQPad的“我的查询”列表里搜索有没有包含LocationDistrict定义的脚本,或者在查询属性的“引用”标签页里查看是否引用了其他查询。
内容的提问来源于stack exchange,提问作者Sabuncu
相关产品推荐
相关产品推荐

