command-line - 如果从 命令行 启动,.NET 2.0输出到 命令行

  显示原文与译文双语对照的内容
55 2

我正在编写一个可以作为标准的WinForms应用程序启动的应用程序,或者从命令行进入无人参与模式。 应用程序是使用 vs 2 k5标准WinForms模板构建的。

当应用程序从命令行执行时,我希望它输出可以执行应用程序的脚本捕获的信息。 当我直接从 Console.WriteLine(), 执行这个操作时,输出不会出现,尽管它可以通过管道捕获到文件。

另一方面,我可以通过在On上执行p/调用来强制应用程序弹出第二个控制台。 虽然这不是我想要的。 我希望将输出显示在应用程序调用的同一窗口中。

这是让我从 命令行 弹出控制台的突出代码:


<STAThread()> Public Shared Sub Main()



 If My.Application.CommandLineArgs.Count = 0 Then


 Dim frm As New ISECMMParamUtilForm()


 frm.ShowDialog()


 Else


 Try


 ConsoleControl.AllocConsole()


 Dim exMan As New UnattendedExecutionManager(ConvertArgs())


 IsInConsoleMode = True


 OutputMessage("Application started.")


 If Not exMan.SetSettings() Then


 OutputMessage("Execution failed.")


 End If


 Catch ex As Exception


 Console.WriteLine(ex.ToString())


 Finally


 ConsoleControl.FreeConsole()


 End Try



 End If



End Sub



Public Shared Sub OutputMessage(ByVal msg As String, Optional ByVal isError As Boolean = False)


 Trace.WriteLine(msg)


 If IsInConsoleMode Then


 Console.WriteLine(msg)


 End If



 If isError Then


 EventLog.WriteEntry("ISE CMM Param Util", msg, EventLogEntryType.Error)


 Else


 EventLog.WriteEntry("ISE CMM Param Util", msg, EventLogEntryType.Information)


 End If



End Sub



时间: 原作者:

115 5

更新1:

Michael回答,最近发表了一篇关于这篇文章的短文。 我很高兴看到我的猜测不是完全错误的。

更新 0:

免责声明:这里"接听"主要是猜测。 我仅仅是因为足够的时间来确定不是很多人都有一个基本问题的答案。

如果应用程序是在编译时而不是运行时生成的,那么我认为"判定"是。 所以如果你将应用程序编译为gui应用程序,即使你不显示 gui,它仍然是一个gui应用程序,并且没有控制台。 如果你选择将它编译为控制台应用程序,那么在移动到 Windows"模式"之前,你至少会有一个控制台闪烁。 我不知道在托管代码中是否有可能。

因为控制台应用程序必须接受调用控制台应用程序的"控件",所以这个问题非常重要。 它必须在子应用程序的代码运行之前执行。

原作者:
...