Console.WriteLine Çıktı penceresinde görünmüyor


87

Console.WriteLineTest etmek için bazı aramalar yaptım , ancak çıkış kutusunda görünmüyorlar?

public static ArrayList myDeliveries = new ArrayList();

public mainForm(){
    InitializeComponent();
}

private void mainForm_Load(object sender, EventArgs e){

    if (!File.Exists("../../MealDeliveries.txt")){
        MessageBox.Show("File not found!");
        return;
    }

    using (StreamReader sr = new StreamReader("../../MealDeliveries.txt")){
        //first line is delivery name 
        string strDeliveryName = sr.ReadLine();
        Console.WriteLine("Test content");

        while (strDeliveryName != null){

            //other lines 
            Delivery d = new Delivery(
                strDeliveryName, 
                sr.ReadLine(),
                sr.ReadLine(), 
                sr.ReadLine(),
                sr.ReadLine(), 
                sr.ReadLine(),
                sr.ReadLine()
            );

            mainForm.myDeliveries.Add(d);

            //check for further values
            strDeliveryName = sr.ReadLine();
        }
    }

    displayDeliveries();


}


private void displayDeliveries(){

    lstDeliveryDetails.Items.Clear();
    Console.WriteLine("Test content");
    Console.WriteLine(mainForm.myDeliveries.Count);
    foreach (Delivery d in mainForm.myDeliveries){
        lstDeliveryDetails.Items.Add(d.DeliveryName);

    }
}

Biri yardım edebilir mi??


Sorunu çözdüm, kodu yanlış yazdım. Doğru şekilde
derlenmiyordu

Yanıtlar:


57

Bu çıktıyı üretimde kullanmayı düşünüyorsanız, Trace sınıfı üyelerini kullanın . Bu, kodu taşınabilir hale getirir, farklı dinleyici türlerini bağlayabilir ve konsol penceresine, hata ayıklama penceresine, günlük dosyasına veya istediğiniz başka bir şeye çıktı verebilirsiniz.

Bu yalnızca belirli kodun yürütüldüğünü veya doğru değerlere sahip olduğunu doğrulamak için kullandığınız bazı geçici hata ayıklama koduysa , Zach'in önerdiği gibi Debug sınıfını kullanın .

Konsolu kesinlikle kullanmanız gerekiyorsa , programın yöntemine bir konsol takabilirsinizMain .


109

Consolekonsol penceresine çıkışlar ve Winforms uygulamaları konsol penceresini göstermez. System.Diagnostics.Debug.WriteLineIDE'nizdeki çıktı penceresine çıktı göndermek için kullanabilmeniz gerekir .

Düzenleme: Sorunla ilgili olarak mainForm_Load, gerçekten arandığınızı doğruladınız mı? mainForm_LoadGörmek için başlangıcına bir kesme noktası yerleştirebilirsiniz . Eğer mainForm_Loadaranmıyorsa, bunun Loadolaya bağlı olmadığından şüpheleniyorum .

Ayrıca, türetilmiş sınıfların içinden On{EventName}abone olmak yerine geçersiz kılmak daha etkilidir ve genellikle daha iyidir {EventName}(sizin durumunuzda geçersiz kılma OnLoadyerine Load).


5
Bunun gibi? System.Diagnostics.Debug.WriteLine ("bazı tetttttttttt23423423423423423ttttttttttttttttttttttt");
sark9012

2
@Luke - evet, ama Import System.Diagnosticsdaha basit hale getirebilirsiniz. Ve bunun için Tracesınıfı kullanmayı tercih ederim .
Joel Coehoorn

2
Visual Studio'nun üst gezinme çubuğunda, içindeki değerleri görmek için Görünüm> Çıktı'ya gidin System.Diagnostics.Debug.WriteLine.
Chad Kuehn

13

Console.WriteLine("example text")Çıktının Hata Ayıklama Çıktı penceresinde görünmesini istiyorsanız , Uygulamanızın Çıktı türünü geçici olarak Konsol Uygulaması'ndan Windows Uygulaması'na değiştirin.

Menülerden Proje + Özellikler'i seçin ve Çıktı türü'ne gidin: açılır, Windows Uygulaması'na geçin ve uygulamanızı çalıştırın

Elbette, IDE'nin dışında çalışması amaçlanan bir konsol uygulaması oluşturmak için onu tekrar değiştirmelisiniz.

(Visual Studio 2008 ve 2010 ile test edilmiştir, sonraki sürümlerde de çalışmasını bekleyin)


Başvurunuzun sonuçlarını hızlı bir şekilde kopyalamak istiyorsanız, bu daha iyi bir yoldur.
Mark Kram

2
Console.Writeline neden bir Konsol uygulamasında çalışmıyor? Bu çok mantıksız geliyor.
sydd

^^ Evet, ne var? Bu her zaman işe yaradı. Ve şimdi değil. Bu, Visual Studio'da bir hata gibi geliyor.
Triynko

4

Kullanılması Console.WriteLine( "Test" );, bir Windows Forms / WPF projesi için Visual Studio'da Çıkış Penceresine (Görünüm Menüsü -> Çıktı) günlük mesajları yazabilir.

Ancak çalışmadığı ve sadece çalıştığı bir durumla karşılaştım System.Diagnostics.Debug.WriteLine( "Test" );. Visual Studio'yu yeniden başlattım ve Console.WriteLine()tekrar çalışmaya başladım. Bir Visual Studio hatası gibi görünüyor.


Ve ayrıca; VS'de yapı oluşturma, oluşturulacak çıktı penceresini değiştirir; bu yüzden şimdi çıktıya tıklamalı, 'çıktısını göster' öğesinde öğeyi değiştirmem VE onlarca başka mesaj arasında gezinmem gerekiyor.
Christian

1

Bir komut satırı uygulaması geliştiriyorsanız Console.ReadLine(), çıktınızı okuyabilmek için konsol penceresini kapatmadan önce kodunuzun sonunda 'Enter' tuşuna basılmasını beklemek için de kullanabilirsiniz. Ancak, yukarıda yayınlanan hem İzleme hem de Hata Ayıklama yanıtları daha iyi seçeneklerdir.


1

"Yönetilen Uyumluluk Modunu Kullan" onay kutusunun işaretini kaldırmayı deneyin.

Araçlar => Seçenekler => Hata Ayıklama => Genel

Benim için çalıştı.


Önceki bir cpp / cli projesinde hata ayıklarken bunu yaptım ve görünüşe göre bu soruna ve NLog'un konsolda oturum açmamasına neden oluyor.
Blackey

0

Mac VS 2017'de sorun meydana geldiğinde (karşılaştığım).

  1. Proje >> "Proje adınız" seçeneklerine gidin.
  2. Bir seçenek penceresi açılacaktır
  3. ÇALIŞTIR >> Varsayılan menü seçeneğine gidin
  4. DOĞRU "Harici konsolda çalıştır" seçeneğini işaretleyin ve Tamam deyin

Uygulama kodunuzu şimdi çalıştırın.


-1

Eski İş Parçacığı, Ancak VS 2015 Console.WriteLine Çıktı Penceresine Yazmıyor "Visual Studio Barındırma İşlemini Etkinleştir" İşaretlenmemişse veya Proje Özellikleri -> Hata Ayıklama sekmesinde Devre Dışı Bırakılmışsa


-3

Çıktı penceresini açmak için görünüm >> Çıktı'yı seçin .

Çıktı penceresinde sonucu görebilirsiniz


1
Bu soruya cevap vermiyor. Kullanıcı özellikle ÇIKTI penceresinde olduklarını söyler (ve dolayısıyla bunu seçtiniz).
Richard Duerr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.