C# 项目调试的时候进不去断点

场景:A项目引用了B.dll,改完B项目代码生成后(假设这里给B项目中的Test1类添加了一个字段),调试A项目的时候,报错:未在Test1中找到字段:xxx

在编辑界面不报错,运行调试才报错,这种问题一般是dll的引用路径问题。

就是你代码里写的看起来使用了新的字段:

但是编译的时候实际编译使用的dll中还是之前没有这个字段的dll。

但是我们也已经重新生成了,为什么不能引起dll更新呢?

实际上dll会跟随重新生成而更新,只不过A项目引用B.dll的时候会从好几个目录下找B.dll,所以即使B.dll已经更新了,但是A项目并没有引用到新的B.dll,而是在某个地方被原来的B.dll截胡了。

这个时候可以观察你的代码编译的时候实际上引用的是哪个目录下的B.dll:

在vs 的输出框查找对应的dll名称:

或者使用代码查看,其中typeof()中的类就是B项目中的一个类:

知道引用的是哪里的B.dll后,把那里的B.dll删除,再重新测试就好了。或者文件资源管理器那里搜索B.dll,先全部删除,再重新生成。

C#项目寻找dll的过程是有顺序的,这一点可以搜索相关字眼学习。

另外,我遇到的情况是:

我的A项目生成方式也是dll,然后输出路径假设是Path-A,启动方式是外部程序。

B项目生成路径是Path-Dll,A项目引用那里现实的B.dll路径是Path-Dll。

由于Path-A路径下存在了一个B.dll,我每次重新生成B生成在了Path-Dll下,导致编译的时候没有引用到真正修改过的B.dll。把Path-A下的B.dll删除后重新测试就好了。

相关推荐
paopaokaka_luck24 分钟前
基于springboot3+vue3的企业考勤管理系统(部门树递归、Echarts图形化分析)
开发语言·spring boot·学习·echarts·mybatis·需求分析·代码规范
小金子会发光1 小时前
C# WinForms 手搓 Modbus RTU 调试助手:不依赖第三方 Modbus 库,从 CRC16 到 8 种功能码完整实现
c#·modbusrtu·串口通讯
梦雨生生2 小时前
java开发工具(学习第一天)
java·开发语言·学习
啊啊啊啊啊!!!!3 小时前
【c++】stack和queue的接口使用以及底层实现
开发语言·c++
松仔log4 小时前
Java中级——组合和继承
android·java·开发语言
上海安当技术5 小时前
C/S 桌面软件怎么接 UKey 强认证?C# SDK 与 C 动态库集成 WinForms/Qt/工控实战
c语言·qt·c#
(Charon)6 小时前
【C++】锁与原子操作(四):自旋锁的完整实现与性能优化
c语言·开发语言·c++
明如正午6 小时前
【C#】跨线程更新进度条_UpdateProgress 方法解析
c#
雨田言炎6 小时前
五、Qt控件使用说明大全
开发语言·qt
bu_shuo7 小时前
MATLAB中的meshgrid和ndgrid
开发语言·matlab