Бачите вихід консолі у Visual Studio 2010?


163

Я пишу просту програму C # з деякими виходами ( Console.WriteLine("...");). Проблема полягає в тому, що кожного разу, коли я її запускаю, я не бачу виходу програми у вікні виводу.

Тег "Виведення програми" вже перевірений, і я вже перенаправляв усі результати на проміжне вікно, але безрезультатно.

Як увімкнути перегляд результатів програми?

Я не думаю, що проблема полягає в моєму коді. Я спробував запустити просту програму, яка просто виводить рядок і читає "ala hello world", і я досі не можу побачити жодного результату. Проблема полягає в тому, що я шукаю вихід у неправильному розташуванні або Visual Studio не працює.

debug.writeМетод також не працює.

Використовуючи debug.Write, це все працює, хоча раніше не було. Або що-небудь помилилося зі мною, перш ніж я перезапустив, або мені просто потрібно зробити перерву, в будь-якому випадку це все добре. Дякую всім за корисні коментарі =)


7
Visual Studio прикриває вікно вашої консолі. Перемістіть його на інший монітор.
Ганс Пасант

Відповіді:


195

Ви можете використовувати System.Diagnostics.Debug.Writeабо System.Runtime.InteropServicesметод, щоб писати повідомлення у вікно виводу.


10
System.Diagnostics.Debug.Write (у випадку, якщо в ОП відсутній простір імен)
jonsca

4
Ну правда, я просто звик бити на контролі + період :)
Річард Аднамс

jonsca: у мене в грі є простір імен, і чому я можу просто використовувати console.writeline, я хочу, щоб моя програма писала на консоль її не лише з міркувань ??
r3x

2
Якщо ваша програма є консольною програмою, ви можете скористатися console.writeline для друку у вікні консолі або якщо ваша програма - це програма для роботи з форматом Windows, ви можете використовувати debug.write. Перевірте це посилання на більш детальну інформацію: social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/…
Річард Аднамс

1
цікаво не знав цього, і так, мій додаток - це програма для роботи з формою Windows, але ні, я намагався використовувати метод debug.Write метод та сама проблема, вона компілюється і все персично, але я не можу побачити вихід ніде
r3x

50

Ось кілька речей, які потрібно перевірити:

  1. Бо console.Write/WriteLineваш додаток повинен бути консольним додатком. (клацніть правою кнопкою миші проект у Провіднику рішень, виберіть " Властивості" та подивіться на вкладку " Тип виводу " на вкладці " Приклад " - має бути " Консольна програма " (зверніть увагу, якщо вам дійсно потрібна програма для Windows або бібліотека класів, не не змініть це на додаток Console лише для того, щоб отримати його Console.WriteLine).

  2. Ви можете використовувати System.Diagnostics.Debug.WriteLineдля запису у вікно виводу (щоб показати вікно виводу у VS, потрапив до View | Output ). Зверніть увагу, що ці записи будуть відбуватися лише у складі, де визначено умовне відлагодження (за замовчуванням, налаштування налагодження визначають це, і версії версій не роблять)

  3. Ви можете використовувати, System.Diagnostics.Trace.Writelineякщо ви хочете мати можливість записувати на "слухачів", що настроюються, у збірках, що не налагоджують. (за замовчуванням це записується у вікно виводу у Visual Studio, точно так само Debug.Writeline)


2
Я не бачив свого виходу, але потім зрозумів, що мені потрібно запустити програму в режимі налагодження (F5) замість Ctrl + Shift + F5. Дякую!
Тревіс Хетер

Схоже, що System.Diagnostics.Trace.Writeline не працює, чи потрібно щось інше налаштувати для цього?
Тревіс Хетер

1
«1» - неправдиве твердження. Моно показує вихідний штраф для всіх застосувань. «2» - оф. Проблема полягає в тому, що метод також не виводить на термінал. Тож не можна налагоджувати додаток на ПК без IDE.
Привіт-Ангел

34

Додати в Console.Read();кінці програми. Це не дозволить додатку закриватися, і ви зможете побачити його вихід таким чином.

Це консольний додаток, який я щойно викопав, який зупиняється після обробки, але перед виходом:

class Program
{
    static void Main(string[] args)
    {
        DummyObjectList dol = new DummyObjectList(2);
        dol.Add(new DummyObject("test1", (Decimal)25.36));
        dol.Add(new DummyObject("test2", (Decimal)0.698));
        XmlSerializer dolxs = new XmlSerializer(typeof(DummyObjectList));
        dolxs.Serialize(Console.Out, dol);

        Console.WriteLine(string.Empty);
        Console.WriteLine(string.Empty);

        List<DummyObject> dolist = new List<DummyObject>(2);
        dolist.Add(new DummyObject("test1", (Decimal)25.36));
        dolist.Add(new DummyObject("test2", (Decimal)0.698));
        XmlSerializer dolistxs = new XmlSerializer(typeof(List<DummyObject>));
        dolistxs.Serialize(Console.Out, dolist);
        Console.Read(); //  <--- Right here
    }
}

Крім того, ви можете просто додати точку розриву в останньому рядку.


2
Console.ReadLine працює так само, що вам просто потрібно натиснути Enter, щоб продовжити там, де Read читає будь-який стандартний ключ.
Річард Аднамс

його додаток у формі Windows, а метод debug.write ні console.writeline, здається, працює
r3x

Ем, чому ти виводиш на консоль додаток Windows Form? Я пропоную натомість вивести форму або діалогову скриньку. Або зробіть консольний додаток ...
Вінсент Ванкальберг

Так, на мене вже вказували, це з мене просто дурна помилка, все ж дякую за голову вгору =)
r3x

Console.Read () спричиняє фокусування вікна консолі, а отже, з'являється перед VS. Якщо ви просто поставите крапку перерви після консолі. Напишіть () у вікні консолі буде показано ваш вихід, але він не має фокусу, тому може бути не видно.
Найджел

21

Натисніть Ctrl+, F5щоб запустити програму замість F5.


1
Ctrl + F5 запускає програму, не налагоджуючи, щоб ви нічого не бачили у вікні виводу.
Річард Аднамс

6
Це працювало для мене; Я просто хотів подивитися, що програма виводить, жоден з консольних результатів не відображався. Це призвело до того, що після запуску вікно консолі було відкритим, щоб я міг бачити вихід.
davenpcj

+1, це той, якщо ви не хочете налагоджувати помилку (показує консоль і дозволяє зчитувати вихід).
mlvljr

8

System.Diagnostics.Debug.WriteLine()буде працювати, але ви повинні шукати в потрібному місці для виходу. У візуальній студії 2010 на панелі меню натисніть налагодження -> Windows -> вихід . Тепер у нижній частині екрана, що знаходиться біля списку помилок, має бути вкладка виводу. Клацніть по ньому та перевірте, чи відображається вихід із потоку налагодження у спадному списку.

PS: Я думаю, що вихідне вікно відображається при новому встановленні, але я не можу згадати. Якщо цього немає, або якщо ви закрили його випадково, дотримуйтесь цих інструкцій.


0

Щоб відкрити консоль Windows і не використовувати інші способи виведення, а не стандартний вихідний потік, перейдіть до Name-of-your-project -> Properties -> Linker -> System.

Потрапивши туди, виберіть вкладку SubSytem та позначте консоль (/ SUBSYSTEM: CONSOLE). Після цього, коли ви хочете компілювати, використовуйте Ctrl + F5 (Почніть без налагодження), і ваша консоль буде відкриватися. :)


Я думаю, що це застосовно до C ++, а не до C #, як у питанні.
Дмитро Федорков

0

Я часто стикаюся з цим чомусь, і не можу зрозуміти, чому це рішення не згадувалося:

Клацніть ПереглядВихід (або просто утримуйте Ctrlта натисніть W> O)

Після цього з'явиться консольний вихід, де знаходяться список помилок , місцеві локальні мережі та вікна перегляду .

Примітка: я використовую Visual Studio 2015.


Вікно виводу, яке ви згадуєте, схоже на те, що воно генерується налагоджувачем, оскільки в ньому є багато рядків, що стосуються завантажуваних збірок, потоків, що починаються та зупиняються тощо. Це відрізняється від консольного виходу.
PeterVermont

0

Visual Studio сама по собі охоплює вікно консолі, спробуйте мінімізувати вікно Visual Studio, вони перетягуються один на одного.


-1

У Program.cs між:

static int Main(string[] agrs)
{

та решту вашого коду додайте:

#if DEBUG
    int rtn = Main2(args);
    Console.WriteLine("return " + rtn);
    Console.WriteLine("ENTER to continue.");
    Console.Read();
    return rtn;
}

static int Main2(string[] args)
{
#endif

Додайте опис, як ваш код вирішує проблему.
Koopakiller

-4

Ви можете створити 2 невеликих методи, один, який можна викликати на початку програми, а другий в кінці. Ви також можете використовувати Console.Read (), щоб програма не закривалася після останнього рядка запису.

Таким чином ви можете визначити, коли функціонал виконуватиметься, а також коли програма існує.

startProgram()
{
     Console.WriteLine("-------Program starts--------");
     Console.Read();
}


endProgram()
{
    Console.WriteLine("-------Program Ends--------");
    Console.Read();
}

Я не бачу, як ця відповідь приносить нову інформацію на питання, оскільки можливість Console.Read () вже була заявлена ​​раніше.
ForceMagic
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.