Comment exécuter l'application console .NET Core à partir de la ligne de commande

Réponses:

274

S'il s'agit d'une application dépendante du framework (par défaut), vous l'exécutez par dotnet yourapp.dll.

S'il s'agit d'une application autonome, vous l'exécutez à l'aide yourapp.exede Windows et ./yourappd'Unix.

Pour plus d'informations sur les différences entre les deux types d'application, consultez l' article Déploiement d'applications .NET Core sur .Net Docs.

svick
la source
22
C'est incroyable le temps qu'il m'a fallu pour le découvrir. J'essaie toutes sortes de commandes "dotnet run", etc. Pourquoi Microsoft a-t-il rendu .NET Core aussi convivial pour les développeurs?
Glen Thomas
2
@GlenThomas Si vous souhaitez exécuter une application que vous développez, vous l'utilisez dotnet run. Aussi, où avez-vous regardé? Où attendriez-vous ces informations?
svick
1
"dotnet run" ne semble plus être le cas avec les projets de base .NET utilisant la nouvelle configuration MSBuild csproj plutôt que les anciens fichiers project.json.
Glen Thomas
1
@GlenThomas Ce n'est pas vrai, dotnet runfonctionne de la même manière pour les nouveaux projets csproj que pour project.json.
svick
5
@GlenThomas, vous ne savez pas si c'est le problème que vous rencontriez, mais lorsque vous essayez d'utiliser dotnet run, assurez-vous que vous êtes dans le répertoire du projet, pas dans le répertoire de la solution.
Ryan Lundy
46

Vous pouvez très facilement créer un EXE (pour Windows) sans utiliser de commandes de construction cryptiques. Vous pouvez le faire directement dans Visual Studio.

  1. Cliquez avec le bouton droit sur le projet d'application console et sélectionnez Publier .
  2. Une nouvelle page s'ouvrira (capture d'écran ci-dessous)
  3. Cliquez sur Configurer ...
  4. Ensuite, changez le mode de déploiement en autonome ou dépendant du framework . .NET Core 3.0 introduit un déploiement de fichier unique qui est un exécutable unique.
  5. Utilisez "dépend du framework" si vous savez que la machine cible a un runtime .NET Core car elle produira moins de fichiers à installer.
  6. Si vous affichez maintenant le dossier bin dans l'explorateur, vous trouverez le fichier .exe.
  7. Vous devrez déployer l'exe avec tous les fichiers de configuration et de DLL de support.

Publication de l'application console

Jess
la source
5
Oui. Il y a l'EXE - ainsi que 217 autres fichiers (api-ms-win-core-namedpipe-l1-1-0.dll, etc.). Est-il possible de regrouper cela en un seul EXE?
Elton
1
Bonne question @Elton. Je ne sais pas. AFAIK vous devez déployer toutes les DLL.
Jess
2
Je pense que le fait qu'il soit configuré pour être autonome nécessiterait que toutes ces DLL soient présentes. Si vous ne les voulez pas là-bas, le mode de déploiement devra probablement être dépendant du Framework
kippermand
1
Tu as fait mon vendredi!
Robin Johnson
20

Vous pouvez également exécuter votre application comme toutes les autres applications de console, mais uniquement après la publication.

Supposons que vous ayez l'application console simple nommée MyTestConsoleApp. Ouvrez la console du gestionnaire de packages et exécutez la commande suivante:

dotnet publish -c Debug -r win10-x64 

-c flag signifie que vous souhaitez utiliser la configuration de débogage (dans les autres cas, vous devez utiliser la valeur Release) - r flag signifie que votre application sera exécutée sur la plate-forme Windows avec une architecture x64.

Lorsque la procédure de publication sera terminée, vous verrez le fichier * .exe situé dans votre répertoire bin / Debug / publish.

Vous pouvez maintenant l'appeler via les outils de ligne de commande. Ouvrez donc la fenêtre CMD (ou le terminal), déplacez-vous vers le répertoire où se trouve votre fichier * .exe et écrivez la commande suivante:

>> MyTestConsoleApp.exe argument-list

Par exemple:

>> MyTestConsoleApp.exe --input some_text -r true
Tequila
la source
2

Avec dotnetcore3.0, vous pouvez empaqueter la solution entière dans un exécutable à fichier unique en utilisant la PublishSingleFilepropriété

-p:PublishSingleFile=True

Exécutables à fichier unique source

Un exemple d' Self Contained, Releaseexécutable OSX:

dotnet publish -c Release -r osx-x64 -p:PublishSingleFile=True --self-contained True

Un exemple de Self Contained, DebugLinux 64bit exécutable:

dotnet publish -c Debug -r linux-x64 -p:PublishSingleFile=True --self-contained True

La construction Linux est indépendante de la distribution et je les ai trouvés fonctionnant sur Ubuntu 18.10, CentOS 7.7 et Amazon Linux 2.

Un exécutable autonome comprend Dotnet Runtime et Runtime n'a pas besoin d'être installé sur une machine cible. Les exécutables publiés sont enregistrés sous:

<ProjectDir>/bin/<Release or Debug>/netcoreapp3.0/<target-os>/publish/ sous Linux, OSX et

<ProjectDir>\bin\<Release or Debug>\netcoreapp3.0\<target-os>\publish\ sous Windows.

TMT
la source
Vous pouvez également ajouter la config au fichier csproj:<PublishSingleFile>true</PublishSingleFile>
Mahdi Ataollahi
0

En utilisant CMD, vous pouvez exécuter un projet de console .net core si .net core SDK est installé sur votre machine:

Pour exécuter le projet de console à l'aide de la ligne de commande Windows, choisissez le chemin d'accès spécifique dans votre répertoire et tapez la commande ci-dessous

dotnet run

Saurabh Nachankar
la source
0

avant d'exécuter dans l'invite cmd, assurez-vous que "appsettings.json" a les mêmes valeurs que "appsettings.Development.json".

Dans l'invite de commande, allez jusqu'au dossier bin / debug / netcoreapp2.0. puis exécutez "dotnet applicationname.dll"

rahul
la source