无法在vscode

时间:2018-02-10 14:28:49

标签: c# visual-studio-code .net-core ubuntu-17.10

我一直试图让dotnet new console示例项目(对于vscode)在Ubuntu 17.10中工作。

我可以运行默认程序:

using System;

namespace dotnet_console
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello world!");
        }
    }
}

但是当我改变它以阅读输入时,它真的很不稳定......

using System;

namespace dotnet_console
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Name: "); // 1
            var name = Console.ReadLine(); // 2
            Console.WriteLine("Hello {0}!", name); // 3
        }
    }
}

程序构建,但不会打印Name:。但是,如果我在第1,2和第1行放置断点3,我可以看到程序贯穿其中所有程序,但没有任何打印。那是我停止调试。然后打印

  

姓名:

     

程序'[16322] dotnet-console.dll'已退出,代码为0(0x0)。

这里发生了什么?我猜它是一个vscode的东西,因为它使用dotnet run从终端运行时按预期工作。

2 个答案:

答案 0 :(得分:7)

Documentation声明如下:

  

默认情况下,将使用其控制台输出启动进程   (stdout / stderr)转到VS Code Debugger Console。这很有用   对于从网络,文件等获取输入的可执行文件   但这对于想要从中读取的应用程序不起作用   console(例如:Console.ReadLine)。对于这些应用程序,请使用设置   如下

我找到了问题here的解决方案。

来自链接文档的以下引用还指出将控制台属性从launch.json更改为" externalTerminal "或" integratedTerminal "会有所帮助。

  

当此设置为 externalTerminal 时,目标进程将在a中运行   单独的终端。

     

当此项设置为 integratedTerminal 时,目标进程将运行   在VS Code的集成终端内部。点击终端'选项卡中   编辑器下方的选项卡组可与您的应用程序进行交互。

Location of launch.json

答案 1 :(得分:2)

正确 - 'internalConsole'不适用于想要获取控制台输入的程序。以下是官方文档:https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md#console-terminal-window