Почему Console.WriteLine не работает в коде Visual Studio?

У меня есть scriptcs и coderunner, установленные в коде Visual Studio. Когда я запускаю простую программу, включающую 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");
    }
}

person Matt West    schedule 05.04.2017    source источник
comment
Вы пытались переключиться в окно отладки?   -  person maccettura    schedule 05.04.2017
comment
Там есть окно консоли отладки, там тоже нет вывода, по крайней мере, в исполнителе кода.   -  person Matt West    schedule 05.04.2017
comment
Если вы попробуете Debug.WriteLine("Test"), вы что-нибудь получите? @MattWest   -  person I.B    schedule 05.04.2017
comment
Привет всем, обратите внимание, что это Visual Studio Code, а не Visual Studio IDE. Цель, к которой я стремлюсь, — выполнить код в расширении Code Runner. В этом редакторе есть окно вывода. Если я запущу там JavaScript console.log, я увижу ожидаемый результат, но, похоже, он не работает в C#.   -  person Matt West    schedule 05.04.2017
comment
@CNuts Нет, это ошибка. Отладка не существует в текущем контексте.   -  person Matt West    schedule 05.04.2017
comment
@MattWest Вам нужно добавить using System.Diagnostics;   -  person I.B    schedule 05.04.2017
comment
@CNuts - Спасибо, добавил, что использую. Все еще не работал, к сожалению. Код запустился, но без вывода.   -  person Matt West    schedule 05.04.2017


Ответы (6)


Если вы просто пытаетесь запустить файл cs без проекта и т. д., то проблема в том, что программа запуска кода обрабатывает файл как скрипт. Таким образом, основной метод на самом деле не вызывается, как это было бы при запуске консольного приложения.

Поэтому решение состоит в том, чтобы сделать ваш основной метод общедоступным и добавить вызов 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

person Kevin    schedule 30.11.2018

В launch.json должно быть поле под названием «консоль»:

Изменение его с:

  "console": "internalConsole",

To:

  "console": "externalTerminal",

исправил это для меня.

person Tim    schedule 12.12.2017
comment
По состоянию на 13.12.17 мне даже не нужно было этого делать. Сейчас я в основном на новой машине по сравнению с тем, когда я писал вопрос. Все, что я сделал, это установил Chocolatey ScriptCS и плагин VS Code ScriptCSRunner, что я сделал и в прошлый раз. Затем я написал быстрый сценарий, нажал «Выполнить», и он сработал! Не уверен, что изменилось, но проблема, кажется, была исправлена ​​​​в каком-то патче. Лучший ответ только для того, чтобы сообщить мне, что он работает сейчас. - person Matt West; 13.12.2017
comment
Кстати: вы также можете использовать «интегрированныйтерминал», если вы не хотите иметь отдельное окно консоли (терминала). Вот официальная документация: github. com/OmniSharp/omnisharp-vscode/blob/master/ - person Gregg Miskelly; 10.02.2018
comment
По состоянию на 16.04.2018 это решение больше не работает. Спасибо, Майкрософт. - person Matt West; 16.04.2018
comment
идеальный ответ, следует добавить документы omnisharp от @GreggMiskelly;) - person markfknight; 14.01.2020

Он покажет ваш вывод, если вы нажмете ctrl+F5. Вы получите вывод в окне консоли. Другое решение, если вы напишете Console.ReadLine(); после console.writeline окно консоли останется открытым до тех пор, пока вы не нажмете ни одну клавишу.

person Sachin Dubey    schedule 05.04.2017
comment
Я пытаюсь запустить код в VS Code, а не в Visual Studio IDE. ctrl+F5 запускает средство запуска задач в этом редакторе. Спасибо хоть! - person Matt West; 05.04.2017

Вам нужно добавить любой из следующих строк кода

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

пример:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Test");
        Console.ReadLine();
    }
}
person mIhAwk    schedule 05.04.2017
comment
Это работает, если я запускаю его в окне консоли, но я пытаюсь заставить его работать в VS Code, аналогично тому, как console.log JavaScript работает в VS Code с использованием расширения Coderunner. Спасибо хоть! - person Matt West; 05.04.2017

Код скомпилировался, а затем запустился, но не очень быстро, и консольное приложение закрылось после выполнения. Чтобы этого не произошло, вам нужно добавить еще один метод, например:

  • Консоль.Прочитать();

or

  • Консоль.ReadLine();

(Строка означает перевод строки, это означает, что курсор перемещается на следующую строку слева).

Таким образом, приложение закроется, если вы нажмете клавишу «Ввод» на клавиатуре.

person Kobrajunior    schedule 05.04.2017
comment
Это работает, если я запускаю его в окне консоли, но я пытаюсь заставить его работать в VS Code, аналогично тому, как console.log JavaScript работает в VS Code с использованием расширения Coderunner. - person Matt West; 05.04.2017

Вам нужно сделать это

Console.WriteLine("Hello");
string name = Console.ReadLine();
person Nizam Ali    schedule 26.06.2018
comment
Дублируйте ответ mlhAwk, не предлагайте то, что уже предложено. - person Munim Munna; 26.06.2018