[通过AssemblyResolve加载程序集时抑制控制台输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[通过AssemblyResolve加载程序集时抑制控制台输出相关的知识,希望对你有一定的参考价值。

我有一个命令行应用程序,我想在应用程序目录之外的某些路径上加载一些DLL。我可以通过添加自己的ResolveEventHandler成功完成此操作。但是,然后我在控制台中得到了这样的有害输出:

Checking for existing AssemblyResolve handler
Removed existing AssemblyResolve handler

如何抑制此输出?

这是我当前的代码:

static Assembly LoadPrereq(object sender, ResolveEventArgs args)
{
    if (args.Name.StartsWith("DebugDiag.DotNet"))
        return Assembly.LoadFile("C:\Program Files\DebugDiag\DebugDiag.DotNet.dll");
    return null;
}

...

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(LoadPrereq);
答案

也许这可能对Console.SetOut(TextWriter)有帮助

将Out属性设置为以TextWriter对象为目标。

为此,您可以调用以下命令将其禁用

Console.SetOut(TextWriter)

您可能可以用Console.SetOut(TextWriter.Null); 保存原件,以便再次启用它

获取标准输出流。

[[Note:未经测试,只能通过文档找到

以上是关于[通过AssemblyResolve加载程序集时抑制控制台输出的主要内容,如果未能解决你的问题,请参考以下文章

加载程序集时发生冲突的依赖项

.net C#加载程序集外dll文件方法

加载管道程序集时出错

尝试通过反射加载应用程序并获取错误“无法加载文件或程序集......系统找不到指定的文件。”

尝试加载反应式程序集时,Expression Blend 4 失败

COM 互操作加载程序集时 AppDomain 的路径