簡體   English   中英

無法從vscode中的.net-core控制台應用程序讀取輸入

[英]Failing to read input from .net-core console application in vscode

我一直在嘗試讓dotnet新的控制台示例項目(對於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行和第3行放置斷點,我可以看到程序運行所有這些,但沒有打印。 那是我停止調試。 然后它打印

名稱:

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

這里發生了什么? 我猜它是一個vscode的東西,因為它使用dotnet run從終端dotnet run時按預期工作。

文檔說明如下:

默認情況下,將啟動進程,並將其控制台輸出(stdout / stderr)發送到VS Code Debugger Console。 這對於從網絡,文件等獲取輸入的可執行文件非常有用。 但這對於想要從控制台讀取的應用程序(例如:Console.ReadLine)不起作用。 對於這些應用程序,請使用如下設置

我在這里找到了解決問題的方法。

來自鏈接文檔的以下引用還指出將控制台屬性從launch.json更改為“ externalTerminal ”或“ integratedTerminal ”將有所幫助。

當此設置為externalTerminal時 ,目標進程將在單獨的終端中運行。

當此設置為integratedTerminal時 ,目標進程將在VS Code的集成終端內運行。 單擊編輯器下方選項卡組中的“終端”選項卡,以與您的應用程序進行交互。

launch.json的位置

正確 - 'internalConsole'不適用於想要獲取控制台輸入的程序。 以下是官方文檔: https//github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md#console-terminal-window

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM