完全隐藏控制台应用程序的控制台,但有时只是

时间:2011-08-11 14:35:28

标签: c# .net console-application

我有一个C#Console应用程序而不是运行预构建步骤(以获取NuGet包)。

当我调试这个时,我想传入一个参数并显示控制台。当我没有调试它时,我不想看到它。我甚至不想让它在那里闪过一秒钟。

我已经找到了隐藏它的方法,在它显示之后。但除非我愿意将它从控制台应用程序更改为Windows应用程序,否则我无法找到永远不会显示的方法。 (如果我能在需要时找到显示控制台的方法,我会这样做。)

2 个答案:

答案 0 :(得分:2)

构建为Windows应用程序并在需要时显示控制台。要在需要时显示控制台,请使用P / Invoke调用AllocConsolepinvoke.net具有您需要的声明)。

(控制台子系统进程总是获取一个控制台,如果有一个控制台,则为父进程,否则为新进程。这就是Windows在深层运行的方式。)

答案 1 :(得分:-1)

使用FreeConsole WINAPI功能:

http://pinvoke.net/default.aspx/kernel32/FreeConsole.html

另一种解决方案是简单地将WinForms应用程序切换为项目类型。然后不会分配任何控制台(并且您不需要显示表单)。