C# 为什么我在尝试调试时偶尔会遇到断点未命中的问题?

C# 为什么我在尝试调试时偶尔会遇到断点未命中的问题?,c#,visual-studio,C#,Visual Studio,我重新编译我的解决方案,当它在调试模式下启动时,我在断点周围收到警告,说它不会被命中 源代码文件有一个不同的副本 为什么在尝试调试时会加载多个版本的源代码 我甚至做了一次干净的编译,但仍然得到了这个错误。Visual Studio通常非常擅长检测源代码与附加的exe或dll进程的代码签名不匹配的情况。因此,我怀疑这是两个可能的问题之一: 调试会话的平台/配置(例如debug/x64)与.exe或.dll编译体系结构不匹配。或 你认为“干净的编译”并不是真正干净的 Visual Studio知道的

我重新编译我的解决方案,当它在调试模式下启动时,我在断点周围收到警告,说它不会被命中

源代码文件有一个不同的副本

为什么在尝试调试时会加载多个版本的源代码


我甚至做了一次干净的编译,但仍然得到了这个错误。

Visual Studio通常非常擅长检测源代码与附加的exe或dll进程的代码签名不匹配的情况。因此,我怀疑这是两个可能的问题之一:

  • 调试会话的平台/配置(例如debug/x64)与.exe或.dll编译体系结构不匹配。或
  • 你认为“干净的编译”并不是真正干净的
  • Visual Studio知道的唯一源代码就是您面前的源代码。但是,当Visual Studio调试.exe或.dll时,它会使用反射将自身附加到.exe或.dll进程,并分析该.exe/.dll的代码。它确定您的.exe/.dll与您希望调试的平台/配置不匹配,或者其反映的源代码与Visual Studio IDE中摆在您面前的书面代码不匹配


    当你说你做了一个干净的编译时,确保它真的很干净(不要依赖Visual Studio的“干净”功能。并非在所有情况下都可靠。例如,如果您创建了在编译前或编译后复制内容的生成事件。请删除项目的/bin和/obj文件夹,然后重新编译。这将确保您的二进制文件始终与最新的调试代码匹配。请执行几次,然后看看是否仍然存在此问题。

    e在VS2019中的错误。我这样解决了


    工具->选项->删除bug->常规和“要求源文件与原始版本完全匹配”取消选择该选项

    我得到该选项主要有两个原因:1.您尝试编译的项目已被检查为未编译(请参阅解决方案的配置)和2.您正在运行的解决方案或项目处于发布模式,未调试。您检查过吗?我还单击了工具栏中的IIS express并将其关闭…没有更改。我刚刚重新启动,现在可以工作了?删除/bin文件夹等的好提示。