C# ConsoleTraceListener:Don';t写入VS输出窗口

C# ConsoleTraceListener:Don';t写入VS输出窗口,c#,visual-studio,logging,trace,C#,Visual Studio,Logging,Trace,我有一个跟踪列表器(DefaultTraceListener派生),用于将特殊格式写入VS输出窗口(因此双击->转到源代码工作)。我删除了标准VS输出默认跟踪侦听器,并将其替换为此侦听器。 但我不想在我的控制台中显示这种长格式,所以我有一个单独的ConsoleTraceLister派生的监听器,在那里提供一个较短的版本。问题是这也会写入VS输出,因此窗口跟踪会加倍。 如何阻止ConsoleTraceLister派生的侦听器写入VS输出窗口?//下面是一些您无法确定是否有用的事情 using Sy

我有一个跟踪列表器(DefaultTraceListener派生),用于将特殊格式写入VS输出窗口(因此双击->转到源代码工作)。我删除了标准VS输出默认跟踪侦听器,并将其替换为此侦听器。
但我不想在我的控制台中显示这种长格式,所以我有一个单独的ConsoleTraceLister派生的监听器,在那里提供一个较短的版本。问题是这也会写入VS输出,因此窗口跟踪会加倍。

如何阻止ConsoleTraceLister派生的侦听器写入VS输出窗口?

//下面是一些您无法确定是否有用的事情

using System;
using System.IO;
using System.Diagnostics;


public class Test
{
    public static void Main()
    {
        TextWriterTraceListener myWriter = new
        TextWriterTraceListener(System.Console.Out);
        Debug.Listeners.Add(myWriter);
        Debug.WriteLine("Test output 1 ");
        Stream myFile = File.Create("output.txt");
        TextWriterTraceListener myTextListener = new
        TextWriterTraceListener(myFile);
        Debug.Listeners.Add(myTextListener);
        Debug.WriteLine("Test output 2 ");


        if (!EventLog.SourceExists("Demo"))
        {
            EventLog.CreateEventSource("Demo", "Demo");
        }


        Debug.Listeners.Add(new EventLogTraceListener("Demo"));
        Debug.WriteLine("Test output 3 ");
        myWriter.Flush();
        myWriter.Close();
        myFile.Flush();
        myFile.Close();
    }
}

通过.config或在代码中显式删除默认跟踪侦听器@HansPassant抱歉,我应该提到我已经删除了默认跟踪侦听器。问题是我的控制台跟踪侦听器也会写入VS输出窗口。我更新了问题以澄清问题。单独的听众怎么了?停止此操作的一个简单方法是在“项目+属性”的“调试”选项卡中取消对托管进程的锁定。谢谢您的帮助-我编辑了您的答案以澄清解决方案-我希望这样可以。干杯。没问题。我很高兴能帮上忙