Konsol çıktısını Visual Studio 2010'da mı görüyorsunuz?


163

Bazı çıktıları ( Console.WriteLine("...");) ile basit bir C # programı yazıyorum . Sorun, her çalıştırdığımda, programın çıktısını çıktı penceresinde göremiyorum.

"Program output" etiketi zaten kontrol edildi ve ben zaten tüm çıkışları ara pencereye yönlendirdim ama boşuna.

Programın çıktısını görmeyi nasıl etkinleştiririm?

Sorunun kodumda olduğunu sanmıyorum. Ben sadece bir dize ve readline "ala merhaba dünya" çıktıları basit bir program çalıştırmayı denedim ve hala herhangi bir çıktı göremiyorum. Sorun benimle yanlış yerde çıktı arıyor veya Visual Studio dışarı hareket.

debug.writeYöntem ayrıca çalışmıyor.

Kullanmak debug.Write, daha önce olmasa da hepsi işe yarıyor. Ya yeniden başlamadan önce benimle ilgili bir şey oldu ya da sadece ara vermeliyim, her iki durumda da şimdi her şey yolunda. Yararlı yorumlar için teşekkürler =)


7
Visual Studio konsol pencerenizi kapatıyor. Diğer monitörünüze taşıyın.
Hans Passant

Yanıtlar:


195

Çıktı Penceresine mesaj yazmak için System.Diagnostics.Debug.Writeveya System.Runtime.InteropServicesyöntemini kullanabilirsiniz .


10
System.Diagnostics.Debug.Write (OP'nin oyunda ad alanı yoksa)
jonsca

4
Ah doğru, ben sadece kontrol + dönemi vurmaya alışkınım :)
Richard Adnams

jonsca: ben oyunda bir ad alanı var ve neden sadece console.writeline kullanabilirsiniz, benim program konsolu sadece test nedenleriyle yazmak için istiyorum ??
r3x

2
Uygulamanız bir konsol uygulamasıysa, konsol penceresine yazdırmak için console.writeline kullanabilirsiniz veya uygulamanız bir windows form uygulamasıysa debug.write kullanabilirsiniz. Abit daha fazla bilgi için bu bağlantıyı kontrol edin social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/…
Richard Adnams 14:11

1
ilginç bilmiyordum ve evet benim app bir windows form uygulaması, ama hayır ben debug.Write yöntemi aynı sorunu kullanarak çalıştı, derler ve tüm şeftali ama çıktı her yerde göremiyorum
r3x

50

İşte kontrol etmeniz gereken birkaç şey:

  1. Çünkü console.Write/WriteLineuygulamanız bir konsol uygulaması olmalıdır. (Solution Explorer'da projeye sağ tıklayın, Özellikler'i seçin ve Uygulama Sekmesindeki " Çıktı Türü " kombinasyonuna bakın - " Konsol Uygulaması " olmalıdır (gerçekten bir windows uygulamasına veya sınıf kütüphanesine ihtiyacınız varsa, sadece bunu almak için Konsol Uygulaması olarak değiştirmeyin Console.WriteLine).

  2. System.Diagnostics.Debug.WriteLineÇıkış penceresine yazmak için kullanabilirsiniz (çıkış penceresini VS'de göstermek için Görünüm | Çıktı'ya var ) Bu yazma işlemlerinin yalnızca DEBUG koşulunun tanımlandığı bir yapıda gerçekleşeceğini unutmayın (varsayılan olarak hata ayıklama derlemeleri bunu tanımlar ve sürüm yapıları yok)

  3. System.Diagnostics.Trace.WritelineHata ayıklamayan yapılarda yapılandırılabilir "dinleyicilere" yazmak istiyorsanız kullanabilirsiniz . (varsayılan olarak bu, Visual Studio'daki Çıktı Penceresine yazar Debug.Writeline)


2
Çıktımı görmüyordum, ancak programı Ctrl + Shift + F5 yerine hata ayıklama modunda (F5) çalıştırmam gerektiğini fark ettim. Teşekkürler!
Travis Heeter

System.Diagnostics.Trace.Writeline yine de çalışmıyor gibi görünüyor, bunun için yapılandırmam gereken başka bir şey var mı?
Travis Heeter

1
«1» - yanlış ifade. Mono, tüm uygulamalar için çıktı kalitesini gösterir. «2» - ofc. Sorun, yöntemin terminale de çıkmamasıdır. Yani bir IDE olmadan PC'de bir uygulamada hata ayıklama olamaz.
Hi-Angel

34

Console.Read();Programınızın sonuna a ekleyin . Uygulamanın kapanmasını önler ve çıktısını bu şekilde görebilirsiniz.

Bu sadece işledikten sonra ama çıkmadan önce durdu kazdık bir konsol uygulaması:

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
    }
}

Alternatif olarak, son satıra bir kesme noktası ekleyebilirsiniz.


2
Console.ReadLine de çalışır, çünkü Read herhangi bir standart anahtarı alır gibi devam etmek için enter tuşuna basmanız yeterlidir.
Richard Adnams

onun bir windows form uygulaması ve debug.write ne de console.writeline yöntemi çalışıyor gibi görünüyor
r3x

Euhm, neden bir Windows Form uygulamasından konsola çıktı veriyorsunuz? Bunun yerine bir form veya dialgbox çıktı almanızı öneririm. Veya bir konsol uygulaması yapın ...
Vincent Vancalbergh

evet zaten bana işaret edildi, bu benim tarafımda sadece aptalca bir hata, hala yukarı için teşekkürler =)
r3x

Console.Read (), konsol penceresinin odaklanmasına neden olur ve bu nedenle VS'nin önünde görünür. Bir Console.Write () yönteminden sonra sadece bir kırılma noktası koyarsanız, Konsol penceresi çıktınızı gösterir ancak odağı yoksa görünür olmayabilir.
Nigel

21

Basın CtrlF5Programı çalıştırmak için +F5 .


1
Ctrl + F5, hata ayıklamadan uygulamayı çıkış penceresinde hiçbir şey görmeyecek şekilde başlatır.
Richard Adnams

6
Bu benim için çalıştı; Sadece programın çıktısını görmek istedim, konsol çıktılarının hiçbiri görünmedi. Bu, çıktıyı görebilmem için çalıştırdıktan sonra konsol penceresini açık tutmasına neden oldu.
davenpcj

+1, bu gerçekten hata ayıklamak istemiyorsanız (konsolu gösterir ve çıktıyı okumaya izin verir).
mlvljr

8

System.Diagnostics.Debug.WriteLine()çalışacak, ancak çıktı için doğru yere bakmalısınız. Visual Studio 2010'da, menü çubuğunda Hata Ayıkla -> Windows -> Çıktı'yı tıklatın. . Şimdi, ekranın altında hata listenizin yanına yerleştirilmiş bir çıkış sekmesi olmalıdır. Tıklayın ve açılır listeden hata ayıklama akışından çıktı gösterdiğini iki kez kontrol edin.

PS: Bence çıkış penceresi yeni bir kurulumda gösteriyor, ama hatırlayamıyorum. Başlamazsa veya kazayla kapattıysanız, bu talimatları izleyin.


0

Windows konsolunuzu açık tutmak ve standart çıktı akışı cout'u yerine başka çıktı yöntemleri kullanmamak için projenizin adı -> Özellikler -> Bağlayıcı -> Sistem'e gidin.

Bir kez orada, SubSytem Sekmesini seçin ve Console'u (/ SUBSYSTEM: CONSOLE) işaretleyin. Bunu yaptıktan sonra, derlemek istediğinizde Ctrl + F5 (Hata ayıklamadan başla) seçeneğini kullanın; konsolunuz açık kalır. :)


Ben soruda olduğu gibi C # için değil, C ++ için geçerli olduğunu düşünüyorum.
Dmitry Fedorkov

0

Bir nedenden dolayı bu sık sık karşılaşıyorum ve neden bu çözümden bahsedilmediğini anlayamıyorum:

GörünümÇıktı'yı tıklayın (veya yalnızca CtrlW> O tuşunu basılı tutun )

Konsol çıktısı daha sonra Hata Listesi , Yerel Ayarlar ve İzleme pencerelerinizin olduğu yerde görünür .

Not: Visual Studio 2015 kullanıyorum.


Bahsettiğiniz Çıktı penceresi, yüklenen montajlar, iş parçacıklarını başlatma ve durdurma vb. Bu konsol çıkışından farklı.
PeterVermont

0

Visual Studio kendi başına konsol penceresini kaplar, birbirleri üzerine çizilen Visual Studio pencerelerini simge durumuna küçültmeyi deneyin.


-1

Program.cs dosyasında:

static int Main(string[] agrs)
{

ve kodunuzun geri kalanına şunu ekleyin:

#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

Lütfen kodunuzun sorunu nasıl çözdüğü hakkında bir açıklama ekleyin.
Koopakiller

-4

Biri programın başında, diğeri sonunda çağrılabilecek 2 küçük yöntem oluşturabilirsiniz. Ayrıca, son yazma satırından sonra programın kapanmaması için Console.Read () öğesini de kullanabilirsiniz.

Bu şekilde işlevselliğinizin ne zaman yürütüleceğini ve programın ne zaman var olduğunu belirleyebilirsiniz.

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


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

Console.Read () olasılığı daha önce belirtildiği için bu cevabın soruya nasıl yeni bilgiler getirdiğini görmüyorum.
ForceMagic
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.