【问题标题】:Why doesn't Console.WriteLine work in Visual Studio Code?为什么 Console.WriteLine 在 Visual Studio Code 中不起作用?
【发布时间】:2017-04-05 16:49:29
【问题描述】:

我在 Visual Studio Code 上安装了 scriptcs 和 coderunner。当我运行一个包含Console.WriteLine("Test") 的简单程序时,我看不到任何输出。程序似乎运行成功,并以代码 0 退出。

有什么建议吗?

以下是所有代码,以防有人感兴趣:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Test");
    }
}

【问题讨论】:

  • 您是否尝试过切换到调试窗口?
  • 有一个调试控制台窗口,那里也没有输出,至少在代码运行器中没有。
  • 如果你尝试Debug.WriteLine("Test"),你有什么收获吗? @MattWest
  • 大家好,请注意这是 Visual Studio Code,而不是 Visual Studio IDE。我的目标是执行 Code Runner 扩展中的代码。该编辑器中有一个“输出”窗口。如果我在那里运行 JavaScript console.log,我会看到预期的输出,但它似乎在 C# 中不起作用。
  • @MattWest 你需要加using System.Diagnostics;

标签: c# visual-studio-code scriptcs vscode-code-runner


【解决方案1】:

在 launch.json 中应该有一个名为 'console' 的字段:

改成:

  "console": "internalConsole",

收件人:

  "console": "externalTerminal",

帮我修好了。

【讨论】:

  • 截至 2017 年 12 月 13 日,我什至不需要这样做。与我写问题时相比,我现在基本上是在一台新机器上。我所做的只是安装 Chocolatey ScriptCS 和 VS Code 插件 ScriptCSRunner,我上次也是这样做的。然后我写了一个快速脚本,点击运行,它成功了!不确定发生了什么变化,但问题似乎已在某个补丁中修复。最好的答案只是让我知道它现在正在工作。
  • 顺便说一句:如果您不想拥有单独的控制台(终端)窗口,也可以使用“集成终端”。这是官方文档:github.com/OmniSharp/omnisharp-vscode/blob/master/…
  • 自 2018 年 4 月 16 日起,此解决方案不再有效。谢谢,微软。
  • 完美答案,应该添加来自@GreggMiskelly 的omnisharp 文档;)
【解决方案2】:

如果您只是尝试在没有项目等的情况下运行 cs 文件,那么问题在于代码运行程序将文件视为脚本。因此,实际上并没有像运行控制台应用程序那样调用 main 方法。

因此,解决方案是公开您的 main 方法并添加对 Program.Main(null); 的调用。在类定义之后。此解决方案不需要任何 launch.json 配置文件或配置更改。请注意在类定义之后对 Program.Main 的调用确实在 VS 代码中显示为错误,但它在代码运行器中运行良好。请参阅下面的代码块。

using System;
class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Test");
    }
}

Program.Main(null);

我在这里找到了答案:https://stackoverflow.com/a/46179597

【讨论】:

    【解决方案3】:

    如果您按下 ctrl+F5,它将显示您的输出。您将在控制台窗口中获得输出。另一种解决方案,如果你会写 Console.ReadLine();在 console.writeline 之后,它将保持打开的控制台窗口,直到您不按任何键。

    【讨论】:

    • 我正在尝试在 VS Code 中运行代码,而不是在 Visual Studio IDE 中运行。 ctrl+F5 在该编辑器中触发任务运行器。不过谢谢!
    【解决方案4】:

    另一种方法是使用 Debug.WriteLine("test") 代替,它写入即时窗口。需要使用 System.Diagnostics

    【讨论】:

      【解决方案5】:

      您需要添加以下任一行代码

      Console.Readline()
      Console.Read()
      Console.ReadKey()
      

      示例:

      class Program
      {
          static void Main(string[] args)
          {
              Console.WriteLine("Test");
              Console.ReadLine();
          }
      }
      

      【讨论】:

      • 如果我在控制台窗口中运行它可以工作,但我试图让它在 VS Code 中运行,类似于 JavaScript 的 console.log 在 VS Code 中使用 Coderunner 扩展的工作方式。不过谢谢!
      【解决方案6】:

      代码确实编译然后运行,但速度不是很快,并且控制台应用程序在执行后自行关闭。为了防止这种情况发生,您需要添加另一种方法,例如:

      • Console.Read();

      • Console.ReadLine();

      Line 代表换行,表示光标移动到左边的下一行)。

      这样,如果您按键盘上的“输入”键,应用程序将关闭。

      【讨论】:

      • 如果我在控制台窗口中运行它可以工作,但我试图让它在 VS Code 中运行,类似于 JavaScript 的 console.log 在 VS Code 中使用 Coderunner 扩展的工作方式。
      【解决方案7】:

      你需要这样做

      Console.WriteLine("Hello");
      string name = Console.ReadLine();
      

      【讨论】:

      • 复制到 mlhAwk 的答案,不要建议已经建议的内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 2021-12-11
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多