64 votes

Est-il possible d'exécuter l'application de console .NET Core en mode silencieux (masquer la fenêtre de console)?

Je suis en train d'automatiser certaines tâches pour moi et j'ai écrit un peu .NET Core 1.0 applications de console. L'un d'eux est BrowserRouter - une application simple qui, en se basant sur le modèle d'url, qui décide du navigateur / navigateur profil pour ouvrir, quand je clique sur http(s), liens.

Cela fonctionne bien mais il y a toujours la fenêtre de la console qui apparaît et disparaît aussitôt.

Est-il un moyen pour exécuter l' .NET de Base de la console de l'application en mode silencieux (masquage de la fenêtre de la console)?

Je sais que dans son intégralité .NET Framework, il est possible de changer le type de sortie de l'Application Windows mais qui n'est pas disponible (pas encore?) pour .NET de Base.

43voto

Martin Ullrich Points 5894

Mise À Jour 2018: En .NET Core 3.0+, vous serez en mesure de fixer <OutputType>WinExe</OutputType> à l'intérieur du fichier csproj.

Actuellement, ce n'est pas directement possible hors de la boîte, car windows exe fichiers contiennent un drapeau indiquant si c'est une "console" ou "GUI application" windows évalue avant même de commencer l'application. Cependant, cet indicateur peut être modifié à l'aide de editbin.exe (livré avec VS C++ outils de construction autant que je sache).

Sur cette base, vous pouvez créer une auto-contenue .NET application de Base (suppression de l' "type": "platform" de la project.json et l'ajout d'une section exécution) afin que votre projet de sortie comprend un effectif .exe le fichier et ajouter un post-script de build qui invoque editbin.exe /subsystem:windows yourapp.exe.

6voto

rey_coder Points 99

Je voulais vraiment faire, comme Martin résolu, mais je ne pouvais pas trouver editbin.exe. Eh bien, je devrait avoir exécuté le VS de l'installateur et de l'installation de visual c++, mais j'ai eu peu de mémoire j'ai donc trouvé un autre moyen de le faire NSubsys sur nuguet

L'application sera fait pour fonctionner en mode "caché" sur la publication.

Remarque pour copier le Npm install de nuget depuis la recherche à partir du gestionnaire de package de solution n'a pas l'air de trouver tout les résultats.

4voto

Dans Net.Core SDK 2.1 (j'ai 2.1.500), ce fichier de projet fonctionne

 <Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net47</TargetFramework>
    </PropertyGroup>

</Project>
 

1voto

Aaron Rumford Points 111

Ce n'est probablement pas la meilleure ou la solution la plus propre, mais un truc que j'ai utilisé avant. Si vous démarrez une nouvelle application Windows Forms, puis de supprimer la référence à la forme du Programme.cs fichier, il va lancer l'application en arrière-plan avec rien en montrant dans la barre des tâches ou sur le bureau. Il n'apparaît pas dans le Gestionnaire des Tâches si.

J'ai utilisé cette astuce pour écrire une application pour jouer une blague à un ami. Il aurait exécuté en arrière-plan et effectuer un bip à intervalles aléatoires. De nouveau, probablement pas la solution la plus élégante, mais une seule façon de faire.

1voto

OzieGamma Points 341

J'ai essayé de l'édition de l' .xproj le fichier mais il semble que c'est de les ignorer, par VS/dotnet. Je ne pense pas qu'il est actuellement pris en charge comme dotnet a été développé avec des Sites web de console et des applications. Microsoft a récemment décidé qu'ils vont revenir à la bonne vieille MSBuild. (https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-to-project-json/)

Donc, je pense que votre meilleur pari est d'attendre jusqu'à alors.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X