【问题标题】:Source file not found / Source file is different - how to avoid unloading and reloading the project?找不到源文件/源文件不同 - 如何避免卸载和重新加载项目?
【发布时间】:2022-06-16 07:13:25
【问题描述】:

我正在尝试在 Visual Studio 中调试一个非常简单的应用程序,但断点不起作用。当发生异常并单击某些方法时,我会收到错误消息,例如

找不到来源

源文件不同

当前不会命中断点。源文件与原始版本不同。

只有 2 种方法可以让我再次进行调试:

  • 重启 Visual Studio

  • 卸载项目并重新加载它

在我过去 18 年的 C# 开发生涯中,两者都不需要。如何让 Visual Studio 正常编译和调试?

在这种情况下,受影响的文件是一个相对较小的项目中的App.xaml.cs。在我使用的几乎所有解决方案中,其他文件都有这个问题,所以这对我来说很像 Visual Studio 问题。

我不想为了使断点工作而禁用校验和或类似功能。我只是想让它工作 - 代码和二进制文件没有理由不同(见下文)。

在发布此问题时,我正在使用 Visual Studio 2019 Enterprise 16.11.9。更新到 16.11.10 也没有帮助(一天后同样的问题)。

作为参考,这是我尝试的替代重启或卸载的方法:

  • 重建解决方案 - 成功重建但不影响调试

    Rebuild started...
    1>------ Rebuild All started: Project: MetalPanda, Configuration: Release Any CPU  ------
    1>  MetalPanda -> D:\...\MetalPanda\bin\Release\MetalPanda.exe
    2>------ Rebuild All started: Project: MetalPanda.Test, Configuration: Release Any CPU ------
    2>  MetalPanda.Test -> D:\...\MetalPanda.Test\bin\Release\MetalPanda.Test.dll
    ========== Rebuild All: 2 succeeded, 0 failed, 0 skipped ==========
    
  • 解决方案的清理 + 重建位于 this question 的 OP - 它成功重建但不影响调试

    Clean started...
    1>------ Clean started: Project: MetalPanda.Test, Configuration: Release Any CPU ------
    2>------ Clean started: Project: MetalPanda, Configuration: Release Any CPU ------
    ========== Clean: 2 succeeded, 0 failed, 0 skipped ==========
    
  • 根据this answer,我还确保在所有配置中都检查了“构建”

  • 根据相同的答案,我确保我取消选中“仅构建启动项目和运行时的依赖项”(尽管这应该足够了,因为它是我的启动项目)

  • 检查某个进程是否在编译后更改文件。我正在使用Process Monitor 和过滤器Path contains App.xaml.cs,但我看不到任何写访问权限。

  • 我已在 Git 中进行了更改,以便能够注意到文件中的任何差异。没有区别。

  • 我添加了一个额外的行 Debug.WriteLine("Just for StackOverflow"); 以检查它是否真的被编译到代码中。我可以看到它的输出,所以它被编译并且源代码与二进制匹配

    [...]
    'MetalPanda.exe' (CLR v4.0.30319: MetalPanda.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll'. Symbols loaded.
    Just for StackOverflow
    'MetalPanda.exe' (CLR v4.0.30319: MetalPanda.exe): Loaded 'D:\...\MetalPanda\bin\Debug\Newtonsoft.Json.dll'. 
    [...]
    
  • 我重建了this answer 中建议的解决方案的每个单独项目。 (我只有两个:启动项目和单元测试)。每个项目都成功构建,但这对调试没有影响。

  • 我按照this answer 中的建议删除了binobj 子文件夹。删除它们是可能的,这也证明可执行文件没有运行,从而阻止重建。

【问题讨论】:

    标签: c# debugging visual-studio-2019 debug-symbols


    【解决方案1】:

    检查这个 - 我从控制台应用程序运行,不知何故,它的项目的构建复选框在配置管理器中未选中。目前尚不清楚您是否遇到完全相同的问题,但这对我有用。

    the source file is different from when the module was built

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多