我试图为自己自动执行某些任务,并编写了一些 .NET Core 1.0 控制台应用程序。其中一个是BrowserRouter--一个简单的应用程序,基于url模式,决定在我点击http(s)链接时打开哪个浏览器/浏览器配置文件。
工作正常,但总会出现控制台窗口并立即消失。
有没有办法静默运行 .NET Core 控制台应用程序(隐藏控制台窗口)?
我完全了解.NET Framework,可以将输出类型更改为Windows应用程序,但 .NET Core 不可用(但是?)。
答案 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
应用
然后你应该阅读微软关于如何 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/)
所以,我认为你最好的选择是等到那时。