Подтвердить что ты не робот

Возможно ли запустить консольное приложение .NET Core молча (скрыть окно консоли)?

Я пытаюсь автоматизировать некоторые задачи для себя, и я написал несколько консольных приложений .NET Core 1.0. Одним из них является BrowserRouter - простое приложение, которое на основе шаблона url решает, какой браузер/браузер будет открыт, когда я нажимаю на ссылки http (s).

Это работает отлично, но всегда появляется окно консоли, которое появляется и сразу исчезает.

Есть ли способ запустить консольное приложение .NET Core без проблем (скрытие окна консоли)?

Я знаю в полной мере .NET Framework, можно изменить тип вывода на Windows Application, но недоступный (пока?) для .NET Core.

4b9b3361

Ответ 1

В настоящее время это невозможно прямо из коробки, потому что файлы exe exe содержат флаг, указывающий, является ли это "консольным" или "графическим" приложением, которое Windows оценивает даже до запуска приложения. Однако этот флаг можно изменить с помощью editbin.exe (поставляется с инструментами сборки VS 'С++ afaik).

Основываясь на этом, вы можете создать автономное приложение .NET Core (удаление "type": "platform" из project.json и добавление раздела времени выполнения), поэтому ваш вывод проекта включает фактический файл .exe и добавляет сообщение -build script, который вызывает editbin.exe /subsystem:windows yourapp.exe.

Ответ 2

Если вы, как и я, хотите развернуть приложение aspnet core mvc

  • во внутренней сети
  • не нужно IIS или WebHostService
  • не заботится о Linux/Mac
  • и хотите скрыть консоль Kestrel от пользователя

тогда вы должны прочитать официальную документацию Microsoft о том, как разместить ядро ​​aspnet в службе Windows

Ответ 3

Это, вероятно, не лучшее или чистое решение, но трюк, который я использовал раньше. Если вы запустите новое приложение Windows Forms, удалите ссылку на форму из файла Program.cs, она запустит приложение в фоновом режиме, и ничего не появится на панели задач или на рабочем столе. Однако он отображается в диспетчере задач.

Я использовал этот трюк, чтобы написать приложение, чтобы сыграть шалость с другом. Он будет работать в фоновом режиме и будет выполнять звуковой сигнал системы с произвольными интервалами. Опять же, возможно, не самое изящное решение, но один из способов сделать это.

Ответ 4

Я попытался отредактировать файл .xproj, но, похоже, он игнорирует VS/dotnet. Я не думаю, что в настоящее время он поддерживается, поскольку dotnet была разработана с учетом веб-сайтов и консольных приложений. Недавно Microsoft решила, что вернется к добрым старым MSBuild. (https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-to-project-json/)

Итак, я думаю, что лучше всего подождать до этого.