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

时间:2016-08-04 20:16:20

标签: c# .net-core

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

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

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

我完全了解.NET Framework,可以将输出类型更改为Windows应用程序,但 .NET Core 不可用(但是?)。

7 个答案:

答案 0 :(得分:23)

更新2018 :在.NET Core 3.0+中,您可以在csproj文件中设置<OutputType>WinExe</OutputType>

目前,这不是直接可能的开箱即用,因为Windows exe文件包含一个标志,指示它是否是&#34;控制台&#34;或&#34; GUI&#34; Windows甚至在启动应用程序之前评估的应用程序。但是,可以使用editbin.exe(带有VS&#39; C ++构建工具afaik)更改此标志。

在此基础上,您可以创建一个自包含的.NET Core应用程序(从"type": "platform"删除project.json并添加运行时部分),以便您的项目输出包含实际的{{1} } file并添加一个调用.exe

的构建后脚本

答案 1 :(得分:2)

我真的很想这样做,因为Martin解决了,但是找不到editbin.exe。好吧,我本应该运行VS安装程序并安装Visual c ++,但是内存有限,所以我在nuguet

上找到了另一种方法NSubsys

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

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

答案 2 :(得分:2)

使用 .NET Core 3.0+(包括 .NET 5),只需在 csproj 中执行此操作:

<OutputType>WinExe</OutputType>

答案 3 :(得分:1)

如果您和我一样希望部署 aspnet core mvc应用

  • 在内部网络上
  • 不想 IIS WebHostService
  • 不关心Linux / Mac
  • 并希望隐藏用户的Kestrel控制台

然后你应该阅读微软关于如何 host an aspnet core in a Windows Service

的官方文档

答案 4 :(得分:1)

在Net.Core SDK 2.1(我有2.1.500)中,此项目文件正在工作

source 'https://rubygems.org'
ruby '2.5.3'


gem 'jbuilder', '~> 2.0'
gem 'pg', '~> 0.21'
gem 'puma'
gem 'rails', '5.1.6'
gem 'redis'

gem 'autoprefixer-rails'
gem 'bootstrap-sass', '~> 3.3'
gem 'font-awesome-sass', '~> 5.0.9'
gem 'sass-rails'
gem 'simple_form'
gem 'uglifier'
gem 'webpacker'
gem 'devise'

group :development do
  gem 'web-console', '>= 3.3.0'
end

group :development, :test do
  gem 'pry-byebug'
  gem 'pry-rails'
  gem 'listen', '~> 3.0.5'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
  gem 'dotenv-rails'
end

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

我尝试编辑.xproj文件,但似乎被VS / dotnet忽略了。 我不认为它目前受支持,因为dotnet是在考虑网站和控制台应用程序的情况下开发的。微软最近决定将恢复旧的MSBuild。 (https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-to-project-json/

所以,我认为你最好的选择是等到那时。