Visual Studio代码断点警告:源代码与原版不同

Visual Studio Code Breakpoint warning: The source code is different from the original version

我对 Visual Studio 代码还很陌生。我正在尝试调试我通过 Git 克隆的已经存在的应用程序。 None 我的文件已修改。我已经下载了微软扩展 "C# for Visual Studio Code (powered by OmniSharp)"。 应用程序启动并将我带到主页 (http://localhost:5000/)。但是它并没有在 startup.cs

内的断点处停止

当我查看应用程序时,它的 运行 不是红色的项目符号点,而是空心的灰色断点。将鼠标悬停在它上面会告诉我 "The source code is different from the original version. To allow this breakpoint to be hit: Add "requireExactSource":false 到 launch.json 并重新启动调试。"。这个我看不懂。

我正在使用:

我也在使用 dotnet 版本 1.0.3

当我将我的项目从 .NET Core 2.0 升级到 2.1 时,这发生在我身上。问题是我忘记编辑 launch.json 以将二进制路径从 netcoreapp2.0 更改为 netcoreapp2.1,因此 VS Code 在错误的位置查找二进制文件。编辑路径解决了问题。

编辑:我建议 VS Code 团队采用基于变量的方法来完全解决这个问题,比如在路径中使用 $TargetRuntime 之类的东西,而不是像 netcoreapp2.1 这样硬编码的东西 [= =15=]

我也是 Visual Studio 代码的新手,我遇到了同样的问题。幸运的是,我能够解决它。

首先,当我处于调试模式时 Visual Studio 代码 给了我正确的提示,也就是你提到的提示:

Breakpoint warning: The source code is different from the original version. To allow this breakpoint to be hit: Add '"requireExactSource": false' to launch.json and restart debugging. -

所以,为了理解,我建议你阅读这篇文章VisualStudioCode-LaunchConfigurations

如上述 link 中的文档所述:

The launch.json file located in a .vscode folder in your workspace (project root folder) or in your user settings or workspace settings.

因此,如果您编辑该文件并按照调试提示的说明进行操作,那就是:

Add '"requireExactSource": false' to launch.json and restart debugging. -

我的 launch.json 现在看起来像这样:

configurations": [
    {
        "name": ".NET Core Launch (web)",
        "type": "coreclr",
        "request": "launch",
        "preLaunchTask": "build",
        // If you have changed target frameworks, make sure to update the program path.
        "program": "${workspaceFolder}/DotNetCoreAngularAPp/bin/Debug/netcoreapp2.1/DotNetCoreAngularApp.dll",
        "args": [],
        "cwd": "${workspaceFolder}/DotNetCoreAngularAPp",
        "stopAtEntry": false,
        "requireExactSource": false,

最后一行显示添加的语句。现在,您应该可以调试它了。 希望对您有所帮助。

发生这种情况的原因有多种,在我的例子中,这是一个 simple/dumb 错误,我在主文件夹中创建了一个解决方案,然后添加了一个新文件夹并在其中创建了一个 webapp。我配置了 launch.json 和 task.json,在我尝试调试修改之前它工作正常。

我的问题是我忘记将 webapp 项目添加到解决方案中,因此在解决方案尝试构建它时失败了。

所以我的解决方案是将我的项目添加到解决方案中。

如果这不是你的情况,请尝试找出为什么你的项目没有被构建,或者为什么它指向其他目录。

这是在将 razor web 应用程序从 .Net Core 3.0 升级到 3.1 时接受的答案的跟进:

  1. 将 .csproj 文件 /Project/PropertyGroup/TargetFramework 更改为 netcoreapp3.1
  2. 如前所述:将 launch.json configurations[0].program 更改为 workspaceFolder/bin/Debug/netcoreapp3.1/MyApp.dll
  3. 从 workspaceFolder/bin/Debug/
  4. 中删除 netcoreapp3.0 和 netcoreapp3.1 文件夹
  5. 在终端中:dotnet build
  6. F5 调试并命中断点

我遇到了这个问题。删除所有 bin/obj/ 文件夹然后重建并没有解决它。我的 launch.json 二进制路径 program: 是我的确切 DLL。

修复的是修改我的 .cs 源文件并重建。 有些东西已经过时了,可能 vscode [=14] 的自动保存=] 文件,或者 dotnet build 在其他地方缓存了一些东西。

我也遇到了同样的问题,通过这两个步骤就解决了我的问题。 在菜单“构建”中

  1. “清洁解决方案”
  2. “重建解决方案”

我遇到了同样的问题。检查您在 .vscode/launch.json 中的配置并确定“preLaunchTask”。然后打开 .vscode/tasks.json 并确保该任务存在并且其在“args”中传递的工作区目标指向您的项目文件。就我而言,我有两个 Web 项目,但只有一个构建任务。