c# - 抑制 Console.Write 在引用包中

标签 c# console-application nuget-package

在一个项目中,我引用了一个 NuGet 包,当它的某些方法被调用时,它会将文本输出到控制台。

我希望它没有,因为我正在用自己的代码向控制台写入内容。

有没有办法抑制该包中发生的控制台写入,但我自己仍然能够写入控制台?

最佳答案

可以使用 Console.SetOut 将默认输出设置为任何其他 TextWriter - 但仍然使用原始的 Console。出。这是一个演示:

using System;
using System.IO;

class Test
{
    static void Main()
    {
        var originalOut = Console.Out;
        Console.SetOut(TextWriter.Null);

        LibraryMethod();
        originalOut.WriteLine("This should still go to the console.");
    }

    static void LibraryMethod()
    {
        Console.WriteLine("Imagine this were in the referenced package.");
        Console.WriteLine("This isn't going anywhere. It's being discarded.");
    }
}

这确实有效 - 但它很烦人。如果可能的话,我个人会要求原始包的作者修改包——库默认写入控制台是很奇怪的。它至少应该允许您指定写入哪个 TextWriter

关于c# - 抑制 Console.Write 在引用包中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59002914/

相关文章:

c++ - 如何处理 wxWidgets 控制台应用程序中的关键事件?

linux - 将控制台输出写入文件

visual-studio - NuGet 为没有访问权限的包创建只读文件夹

c# - 使用 MSTSCLib 登录远程桌面

c# - 在 MigraDoc 表中插入 "http"图像

c# - 在 C# 中,将列表中的连续日期分组的最佳方法是什么?

c# - 使用 Assert 语句时有什么方法可以忽略 Possible Null Reference Exception 警告?

.net - 使用 Windows.Forms.Webbrowser.Navigate() 时禁用 Javascript 弹出窗口

c# - 如何在 NuGet v3 API 中拥有本地包的程序集 (dll)?

c# - .net 核心的 excel nuget 包