【发布时间】:2016-01-11 16:42:59
【问题描述】:
我有一个 C# 程序集,它处理一个 xml 文件,最后将结果输出到控制台。
例如Console.WriteLine(_header.ToString());
我可以在 powershell 中加载这个 dll 并像这样调用正确的方法:
[sqlproj_doctor.sqlprojDoctor]::ProcessXML($file) | out-file ./test.xml
一切都好。
当我想重定向输出时,问题就开始了。出于某种原因,标准输出为空。我错过了什么?我需要进一步处理这个 dll 的输出。
注意:如果我将相同的代码编译为可执行文件,它会正确填充标准输出流,并且我可以重定向输出。
另一个注意事项:作为一种解决方法,我将方法从 void 更改为 string,现在可以操作返回的字符串。
【问题讨论】:
-
它真的使用
Console.WriteLine而不是其他东西在控制台上显示文本吗? -
我粘贴了类库中使用的确切代码行...
-
感谢 Mathias,但您参考的文章描述了如何拦截标准输出流。就我而言,标准输出是空的。那就是问题所在。另外,让我们注意上下文。在您的示例中,一切都发生在一个应用程序中。在我的情况下,正在加载一个 dll 并从 powershell 控制台调用一个方法。
-
@MorDeror 你能说明一下,你是如何尝试重定向输出的?如果
ProcessXML只使用Console.WriteLine,那么 Mathias R. Jessen 提出的方法应该适合你。如果你自己有汇编代码,如下你的注释我改变了方法,为什么不重写方法来接受TextWriter来写而不是使用Console.WriteLine?
标签: c# powershell dll