Home Articles

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

Asked
Viewed 1776 times
5

VSCode版本:1.8.0

操作系统版本:Win10 x64

重现步骤:

  • 使用"dotnet new"创建一个新的.net核心cli应用程序

  • 使用VS代码打开文件夹

  • 在Program.cs中添加两行代码

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

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

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

2 Answers

  • 14

    我是c#-visual studio调试器的新手......

    尝试在你之前设置一个断点

    Console.Readline()
    

    并通过单步执行代码F10(而不是F11)来调试它 .

    它应该停在

    Console.Readline()
    

    并等待你的输入 .

  • -3

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

    {
        "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}"
            }
        ]
    }
    

    您可以使用 "externalTerminal""integratedTerminal" . "internalConsole" 似乎不起作用 .

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

Related