是否可以静默运行.NET Core控制台应用程序(隐藏控制台窗口)?

rad*_*byl 36 c# .net-core

我正在尝试为自己自动执行某些任务,并编写了一些.NET Core 1.0控制台应用程序.其中之一是BrowserRouter--一个简单的应用程序,基于url模式,决定在我点击http(s)链接时打开哪个浏览器/浏览器配置文件.

这工作正常,但总会出现控制台窗口,并立即消失.

有没有办法静默运行.NET Core控制台应用程序(隐藏控制台窗口)?

我知道在完整的.NET Framework中,可以将输出类型更改为Windows应用程序,但是对于.NET Core,这是不可用的(但是?).

Mar*_*ich 27

更新2018:在.NET Core 3.0+中,您将能够<OutputType>WinExe</OutputType>在csproj文件中进行设置.

目前,这不是直接可能的开箱即用,因为Windows exe文件包含一个标志,指示它是否是窗口在启动应用程序之前评估的"控制台"或"GUI"应用程序.但是这个标志可以使用editbin.exe(带有VS'C++构建工具afaik)来改变.

在此基础上,您可以创建一个独立的.NET Core应用程序("type": "platform"从中删除project.json并添加运行时部分),以便您的项目输出包含一个实际.exe文件并添加一个调用的构建后脚本editbin.exe /subsystem:windows yourapp.exe.


Vad*_*kin 12

对于 .NET Core 3.0+(包括 .NET 5),只需在 csproj 中执行以下操作:

<OutputType>WinExe</OutputType>


rey*_*der 6

我真的很想在 Martin 解决后这样做,但我找不到 editbin.exe。好吧,我应该运行 Visual Studio 安装程序并安装 Microsoft Visual C++,但我的内存有限,所以我在NuGet上找到了另一种 NSubsys 方法。

该应用程序将在发布时以隐藏模式运行。

请注意从 NuGet 复制 Npm install 命令,因为从包管理器中搜索解决方案似乎没有找到任何结果。


Aar*_*ord 1

这可能不是最好或最干净的解决方案,但我以前使用过的技巧。如果启动新的 Windows 窗体应用程序,然后从 Program.cs 文件中删除对该窗体的引用,它将在后台运行该应用程序,任务栏或桌面上不会显示任何内容。但它确实出现在任务管理器中。

我用这个技巧编写了一个应用程序来对朋友恶作剧。它将在后台运行并以随机间隔发出系统蜂鸣声。同样,这可能不是最优雅的解决方案,而是一种实现方法。

  • 如果它是 Winform 应用程序,您只需执行“this.Hide()”即可,并且不会显示表单。OP想隐藏控制台。 (2认同)
  • 我认为 dotnet core 尚不支持 WinForms (2认同)