手工编辑 tasks.json 和 launch.json,让你的 VSCode 具备调试 .NET Core 程序的能力 如果 C# for Visual Studio Code 没有办法自动为你生成正确的 tasks.json 和 launch.json 文件那么可以考虑阅读本文手工创建他们。​前期准备你需要安装 .NET Core Sdk、Visual Studio Code 和 C# for Visual Studio Code然后打开一个 .NET Core 的项目。如果你没有准备请先阅读让你的 VSCode 具备调试 C# 语言 .NET Core 程序的能力本文主要处理自动生成的配置文件无法满足要求手工生成。半自动创建 tasks.json 和 launch.json这依然是个偷懒的好方案我喜欢。按下 F5在弹出的列表中选择 .NET Core你不需要再做什么其他的工作了这时再按下 F5 你已经可以开始调试了。全手工创建 tasks.json 和 launch.jsontasks.json 定义一组任务。其中我们需要的是编译任务通常编译一个项目使用的动词是build。比如dotnet build命令就是这样的动词。于是定义一个名字为build的任务对应label标签。command和args对应我们在命令行中编译一个项目时使用的命令行和参数。type为process表示此任务是启动一个进程。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15{ version: 2.0.0, tasks: [ { label: build, command: dotnet, type: process, args: build, ${workspaceFolder}/Walterlv.InfinityStartupTest/Walterlv.InfinityStartupTest.csproj , problemMatcher: $msCompile } ] }在 launch.json 中通常配置两个启动配置一个是启动调试一个是附加调试。type是在安装了 C# for Visual Studio Code (powered by OmniSharp) 插件之后才会有的调试类型。preLaunchTask表示在此启动开始之前需要执行的任务这里指定的build跟前面的build任务就关联起来了。program是调试的程序路径console指定调试控制台使用内部控制台。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23{ version: 0.2.0, configurations: [ { name: 调试 Walterlv 的自动化测试程序, type: coreclr, request: launch, preLaunchTask: build, program: ${workspaceFolder}/Walterlv.InfinityStartupTest/bin/Debug/netcoreapp3.0/Walterlv.InfinityStartupTest.dll, args: [], cwd: ${workspaceFolder}/Walterlv.InfinityStartupTest, console: internalConsole, stopAtEntry: false, internalConsoleOptions: openOnSessionStart }, { name: 附加进程, type: coreclr, request: attach, processId: ${command:pickProcess} } ] }这样自己手写的方式更灵活但是也更难。本文会经常更新请阅读原文 https://blog.walterlv.com/post/equip-vscode-manually-for-dotnet-core-app-debugging.html 以避免陈旧错误知识的误导同时有更好的阅读体验。