وجود إخراج تطبيق وحدة التحكم في Visual Studio بدلاً من وحدة التحكم

StackOverflow https://stackoverflow.com/questions/2542599

  •  23-09-2019
  •  | 
  •  

سؤال

عند إجراء تطبيق وحدة تحكم في Java مع Eclipse ، أرى أن الإخراج يتم وضعه في مربع نص في IDE نفسه ، بدلاً من ظهور وحدة تحكم كما في Visual Studio. يأتي هذا في متناول يدي ، حتى بعد خروج البرنامج ، لا يزال بإمكاني الاستفادة من النص الذي تم كتابته فيه ، لأنه لا يتم محوه حتى أقوم بتشغيله مرة أخرى. هل من الممكن تحقيق أي شيء من هذا القبيل مع Visual Studio؟ أعلم أنه بدلاً من القيام به

System.Console.WriteLine(str);

أستطيع أن أفعل

System.Diagnostics.Debug.WriteLine(str);

لكن هذا ليس نفس الشيء تمامًا ، حيث تحصل على الكثير من "الخردة" في نافذة الإخراج ، مثل جميع الرموز المحملة وما شابه.

والأفضل من ذلك ، هل من الممكن القيام بكل شيء في IDE نفسه ، عندما تقوم بتشغيل التطبيق الخاص بك ، بدلاً من تشغيل وحدة التحكم؟

هل كانت مفيدة؟

المحلول

في مربع حوار أدوات -> Visual Studio Options -> تصحيح الأخطاء -> تحقق من "إعادة توجيه جميع نص نافذة الإخراج إلى النافذة المباشرة".

نصائح أخرى

في ال استوديو مرئي مربع حوار الخيارات -> تصحيح الأخطاء -> تحقق من "إعادة توجيه جميع نص نافذة الإخراج إلى النافذة المباشرة". ثم انتقل إلى إعدادات المشروع الخاصة بك وقم بتغيير النوع من "تطبيق وحدة التحكم" إلى "تطبيق Windows". في هذه المرحلة ، لم يعد Visual Studio يفتح نافذة وحدة تحكم بعد الآن ، ويتم إعادة توجيه الإخراج إلى نافذة الإخراج في Visual Studio. ومع ذلك ، لا يمكنك فعل أي شيء "إبداعي" ، مثل طلب إدخال المفتاح أو النص ، أو مسح وحدة التحكم - ستحصل على استثناءات وقت التشغيل.

يستخدم System.Diagnostics.Trace

اعتمادًا على المستمعين الذين ترفقهم ، يمكن أن ينتقل إخراج التتبع إلى نافذة التصحيح أو وحدة التحكم أو ملف أو قاعدة بيانات أو في وقت واحد. الاحتمالات لا حصر لها حرفيا ، لأن تطبيق tracelistener الخاص بك بسيط للغاية.

تأكد من التحقق "إعادة توجيه جميع الإخراج ..."مربع الاختيار في Windows إعداد تصحيح الأخطاء:

Make sure the check the

يمكنك إنشاء تطبيق Wrapper تقوم بتشغيله بدلاً من تشغيل تطبيقك الحقيقي مباشرة. يمكن أن يستمع تطبيق Wrapper إلى Stdout وإعادة توجيه كل شيء لتتبعه. ثم قم بتغيير إعدادات التشغيل لبدء تشغيل Wrapper وتمريرها في المسار إلى التطبيق الحقيقي لتشغيله.

يمكن أن يكون لديك أيضًا Wrapper Auto-Attach تصحيح الأخطاء إلى العملية الجديدة إذا تم إرفاق مصحح الأخطاء بالركب.

أعلم أن هذه مجرد إجابة أخرى ، لكنني اعتقدت أنني سأكتب شيئًا لأسفل لمطوري الويب الجدد ، الذين قد يشعرون بالارتباك حول جزء "التغيير إلى تطبيق Windows" ، لأنني أعتقد بشكل افتراضي تطبيق MVC في Visual Studio 2013 الإعدادات الافتراضية لنوع إخراج من مكتبة الفصل.

يتم تعيين تطبيق الويب الخاص بي افتراضيًا كنوع إخراج من "مكتبة الفصل". ليس عليك تغيير ذلك. كل ما كان علي فعله هو اتباع اقتراحات الذهاب إلى الأدوات> الخيارات> تصحيح الأخطاء> إعادة توجيه جميع نص نافذة الإخراج إلى النافذة المباشرة. ثم استخدمت System.Diagnostics.Trace اقتراح من جويل كويورن أعلاه.

حل بسيط يعمل بالنسبة لي ، للعمل مع قدرة وحدة التحكم (readKey ، سلسلة مع التنسيق والأرجو ، ولرؤية وحفظ الإخراج:

أنا أكتب Textwriter التي تكتب إلى Console و ل Trace واستبدال Console.Out معها.

إذا كنت تستخدم Dialog -> تصحيح الأخطاء -> تحقق من "إعادة توجيه جميع نص نافذة الإخراج إلى النافذة المباشرة" ستحصل عليها في النافذة المباشرة ونظيفة جدًا.

رمزتي: في بداية الكود الخاص بي:

   Console.SetOut(new TextHelper());

والصف:

public class TextHelper : TextWriter
    {
        TextWriter console;

        public TextHelper() {
            console = Console.Out;
        }

        public override Encoding Encoding { get { return this.console.Encoding; } }
        public override void WriteLine(string format, params object[] arg)
        {
            string s = string.Format(format, arg);
            WriteLine(s);
        }
        public override void Write(object value)
        {
            console.Write(value);
            System.Diagnostics.Trace.Write(value);
        }

        public override void WriteLine(object value)
        {
            Write(value);
            Write("\n");
        }
        public override void WriteLine(string value)
        {
            console.WriteLine(value);
            System.Diagnostics.Trace.WriteLine(value);

        }

    }

ملاحظة: لقد تجاوزت ما أحتاجه فقط ، لذا إذا كتبت أنواعًا أخرى ، فيجب عليك تجاوز المزيد

بدلاً من ذلك ، يمكنك جمع الإخراج في نتيجة اختبار.

لا يمكنك توفير الإدخال ، ولكن يمكنك بسهولة توفير العديد من الاختبارات مع وسيطات سطر الأوامر المختلفة ، كل اختبار يجمع الإخراج.

إذا كان هدفك هو تصحيح الأخطاء ، فهذه طريقة منخفضة الجهد لتقديم سيناريو تصحيح التصحيح.

namespace Commandline.Test
{
    using Microsoft.VisualStudio.TestTools.UnitTesting;

    [TestClass]
    public class CommandlineTests
    {
        [TestMethod]
        public void RunNoArguments()
        {
            Commandline.Program.Main(new string[0]);
        }
    }
}

لقد حان الوقت للتحقق من أحدث إصدار/s للاستوديو المرئي ، والناس. قد يعمل الحل الأكثر اقتراحًا الذي لم ينجح لبعضكم من قبل.

في Visual Studio 2017 (الإصدار الإصدار 15.4.2 وما فوق) ، الذهاب إلى Tools > Options > Debugging > General > (Check Box) Redirect all Output Window text to Immediate Window عملت لي.

ملاحظات قليلة: 1. لرؤية النافذة المباشرة ، تأكد من أنك في تصحيح الأخطاء الوضع. 2. يجب أن يكون هناك الآن 3 أدوات أخرى لتصحيح الأخطاء المتاحة تحت تصرفك ، وهي مكدس المكالمات ونقاط التوقف ونافذة الأوامر ، كما هو موضح أدناه:

enter image description here

افضل الأمنيات!

الخطوة 1: انقر بزر الماوس الأيمن على اسم المشروع في Solution Explorer ثم قم بعمل نوع الإخراج كتطبيق نافذة

الخطوة 2: تصحيح-> خيارات ..--> تصحيح الأخطاء (توسيع)-> عام-> إعادة توجيه جميع نص نافذة الإخراج إلى النافذة المباشرة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top