Pour un projet d'application console ciblant .NET Core 1.0, je ne peux pas comprendre comment obtenir un fichier .exe à afficher lors de la génération. Le projet fonctionne bien en débogage.
J'ai essayé de publier le projet, mais cela ne fonctionne pas non plus. Cela a du sens car un fichier EXE serait spécifique à la plate-forme, mais il doit y avoir un moyen. Mes recherches ont uniquement révélé des références à des versions plus anciennes de .NET Core qui utilisaient project.json.
Chaque fois que je crée ou publie, c'est tout ce que je reçois:
dotnet <path>.dll
(je ne pensais pas et je tapaisdotnet run <path>.dll
sans succès pour des raisons évidentes)! (À la réflexion, il serait bon que cela soit clos en faveur de l'autre question qui a un ensemble de réponses similaire)Réponses:
À des fins de débogage, vous pouvez utiliser le fichier DLL. Vous pouvez l'exécuter en utilisant
dotnet ConsoleApp2.dll
. Si vous souhaitez générer un fichier EXE, vous devez générer une application autonome.Pour générer une application autonome (EXE sous Windows), vous devez spécifier le runtime cible (qui est spécifique au système d'exploitation que vous ciblez).
Pre-.NET Core 2.0 uniquement : ajoutez d'abord l'identifiant d'exécution des runtimes cibles dans le fichier .csproj ( liste des RID pris en charge ):
L'étape ci-dessus n'est plus requise à partir de .NET Core 2.0 .
Ensuite, définissez le runtime souhaité lorsque vous publiez votre application:
la source
RuntimeIdentifier
dans le csproj.MISE À JOUR (31-OCT-2019)
Pour tous ceux qui souhaitent le faire via une interface graphique et:
Remarque
Remarquez la grande taille du fichier pour une si petite application
Vous pouvez ajouter la propriété "PublishTrimmed". L'application inclura uniquement les composants utilisés par l'application. Attention : ne faites pas cela si vous utilisez la réflexion
Publier à nouveau
Post précédent
Pour toute personne qui utilise Visual Studio et souhaite le faire via l'interface graphique, consultez les étapes ci-dessous:
la source
Ce qui suit produira, dans le répertoire de sortie,
Mais il ne contient pas tous les assemblys d'exécution .NET Core.
Je l'ai enveloppé dans un échantillon ici: https://github.com/SimonCropp/NetCoreConsole
la source
Si un fichier .bat est acceptable, vous pouvez créer un fichier bat avec le même nom que le fichier DLL (et le placer dans le même dossier), puis collez le contenu suivant:
Évidemment, cela suppose que .NET Core est installé et disponible dans le monde entier sur la machine.
(Cette réponse est dérivée du commentaire de Chet .)
la source
Voici ma solution de contournement hacky - générer une application console (.NET Framework) qui lit son propre nom et arguments, puis appelle
dotnet [nameOfExe].dll [args]
.Bien sûr, cela suppose que .NET est installé sur la machine cible.
Voici le code. N'hésitez pas à copier!
la source
dotnet [nameOfExe].dll %*