Debug Console窗口在调试期间无法接受Console.ReadLine()输入

Jam*_* L. 8 visual-studio-code

VSCode版本:1.8.0

操作系统版本:Win10 x64

重现步骤:

  1. 使用"dotnet new"创建一个新的.net核心cli应用程序
  2. 使用VS代码打开文件夹
  3. 在Program.cs中添加两行代码

    string a = Console.ReadLine(); Console.WriteLine(一);

  4. 切换到VS代码调试窗口并开始调试,显示调试控制台窗口,并显示第一个"Hello,World".输出,并在Console.ReadLine()行停止,在调试控制台中输入任何内容,然后按Enter键将显示错误消息"由于进程正在运行,无法执行此操作".

问题是在调试期间如何以及在何处输入Console.ReadLine()接受的文本,如果我打开一个新的cmd.exe并执行"dotnet run"它工作正常,但在Visual Studio Code Debug Console中它无法正常工作.

sau*_*ahu 26

要在调试时读取输入,可以console在配置中使用该属性launch.json

{
    "version": "0.2.0",
    "configurations": [{
            "name": ".NET Core Launch (console)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceRoot}/bin/Debug/netcoreapp2.0/Hashing.dll",
            "args": [],
            "cwd": "${workspaceRoot}",
            "console": "externalTerminal",
            "stopAtEntry": false,
            "internalConsoleOptions": "openOnSessionStart"
        },
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:pickProcess}"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

你可以使用"externalTerminal""integratedTerminal".在"internalConsole"没有出现一起工作.

我使用该integratedTerminal设置,因为终端在VSCode本身内部.您现在可以阅读输入Console.ReadLine();

  • 不幸的是,这还不够。要使其正常工作,请执行以下操作: 1. 更改 `"console": "integratedTerminal"`。2. 在其旁边添加 `"internalConsoleOptions": "neverOpen"`。3. 现在,当您使用 *Ctrl+F5* 运行应用程序时,不会出现烦人的***调试控制台***,并且您可以看到显示输出的***终端***选项卡。 (5认同)
  • 优秀且正确的答案!这解决了我的问题(运行应用程序并阅读 VSC 中的关键反馈而无需离开它)。从什么时候 launch.json 支持新的 console 属性?我提交问题时 VSC 仅支持 externalConsole 属性。 (2认同)