80 votes

Construire un fichier .exe dans .NET Core RC2

Chaque fois que je construis un projet en utilisant les nouveaux modèles .NET Core RC2, je suis no muni d'un runnable . EXE fichier. Si j'appuie sur la touche F5 pour déboguer mon application console, elle s'exécute sans problème dans l'application.

C:\Program Files\dotnet\dotnet.exe 

application. Et si j'utilise le

dotnet run 

dans le dossier, il fonctionne bien aussi. Mais je ne vois aucun moyen d'exécuter l'application sans les outils .NET Core CLI.

Le contenu de mon

 bin\Debug\netcoreapp1.0\

ressemble à ceci :

Bin folder structure

Comme vous pouvez le constater, il n'y a pas de . EXE disponible. Juste la dll.

Est-ce que je néglige quelque chose ? Ou y a-t-il un problème avec mon fichier project.json ?

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0-rc2-3002702"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  }
}

Merci !

0 votes

@DavidPine La réponse concernant l'utilisation de compilationOptions est obsolète dans la RC2. J'ai quand même essayé, et j'ai obtenu le même résultat.

0 votes

Vous avez raison, désolé pour ça. Cela devrait être buildOptions et vous avez déjà le "emitEntryPoint": true ce qui devrait faire l'affaire. Avez-vous essayé d'exécuter manuellement dotnet build de la cmd fenêtre de ligne ? De plus, êtes-vous certain que vous regardez dans le bon répertoire de sortie ?

0 votes

@DavidPine Oui, j'ai essayé les commandes build, run et publish. Elles fonctionnent toutes bien. Mais je n'ai pas de fichier .exe dans mon dossier bin ou dans un autre dossier sous-jacent.

72voto

Pinpoint Points 486

Il existe en fait deux modèles d'application dans .NET Core :

  • Applications portables : fortement inspirées des "applications de la console DNX", ces applications ne produisent pas .exe et sont plutôt exécutés par le moteur d'exécution partagé .NET Core (dont la version est définie par le fichier Microsoft.NETCore.App grâce à son système spécial de type: platform attribut). Le runtime .NET Core correspondant doit être installé sur la machine pour pouvoir utiliser les applications portables. Si la version exacte ne peut être trouvée, une exception est levée lors de l'exécution de la commande dotnet run .

  • Applications autonomes Les applications autonomes sont très similaires aux bonnes vieilles applications de la console .NET, car elles produisent des informations sur l'état de l'environnement. .exe fichiers. Le moteur d'exécution .NET Core n'a pas besoin d'être installé sur la machine, car il est directement intégré à l'application elle-même.

Vous utilisez actuellement le premier modèle. Pour utiliser le modèle autonome, vous devez modifier votre fichier project.json :

  • Ajouter un runtimes pour énumérer les environnements que votre application va cibler (par ex. win7-x64 ou ubuntu.14.04-x64 ). Vous pouvez trouver la liste complète aquí .
  • Retirer le Microsoft.NETCore.App dépendance. Vous pouvez le remplacer par ce paquet à la place : "NETStandard.Library": "1.5.0-rc2-24027" .

Voici un exemple d'application autonome :

{
  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true,
    "warningsAsErrors": true
  },

  "dependencies": {
    "Microsoft.Extensions.Configuration.Binder": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.CommandLine": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
    "Microsoft.Extensions.DependencyInjection": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
    "NETStandard.Library": "1.5.0-rc2-24027"
  },

  "frameworks": {
    "net451": { },

    "netcoreapp1.0": {
      "dependencies": {
        "System.Net.Ping": "4.0.0-rc2-24027"
      },

      "imports": [
        "dnxcore50",
        "dotnet5.6",
        "portable-net451+win8"
      ]
    }
  },

  "runtimes": {
    "win7-x64": { }
  }
}

2 votes

C'est tout ! Merci !

0 votes

Pouvez-vous expliquer si le netcoreapp1.0 La section cadre est/ n'est pas nécessaire ? C'est-à-dire que vous avez listé System.Net.Ping en tant que dépendance - pourrait-elle être déplacée vers la catégorie précédemment définie dependencies section ?

3 votes

Aucun de ces modèles d'application ne produit un seul .exe - je suppose que cela n'est possible qu'avec le .NET Framework complet ?

13voto

zwcloud Points 2251

La réponse se trouve dans le documentation avec des étapes complètes maintenant.

Vous pouvez créer deux types de déploiements pour les applications .NET Core :

  1. Déploiement dépendant de la structure
  2. Déploiement autonome

Pour un fichier .EXE exécutable, l'option Publier des documents autonomes doit être utilisé.

9voto

Jack Miller Points 429

Pour créer une application exécutable à partir d'une application console .NET Core, vous pouvez utiliser la fonction outil dotnet . Il suffit de l'exécuter dans le répertoire de votre projet :

dotnet publish --runtime win7-x64

Cela crée une application autonome (déploiement autonome ; comprend toutes les bibliothèques nécessaires et occupe au moins 60 Mo sur votre disque). Bien sûr, vous pouvez également choisir d'autres moteurs d'exécution, tels que osx.10.11-x64 ou ubuntu.16.04-x64 .

Si vous avez utilisé la configuration par défaut ( New Project -> Console App (.NET Core) ), il n'est pas nécessaire de modifier un quelconque fichier de configuration.

4voto

Shankar Points 87

Étape 1 : enlever "type": "platform", de Project.json sous frameworks section

étape 2 : ajoutez la section run time à votre project.json. Notez que chaque section est séparée par une virgule. Ajoutez votre runtime. ci-dessous est juste un exemple pour win 10.

"runtimes": {
       "win10-x64": {}      
     }

Etape 3 : commande dotnet restore sur votre projet. ( ouvrez cmd, allez dans le dossier de votre projet où se trouve le dossier src, exécutez dotnet restor )

étape 4 : dotnet pack étape 4 : dotnet build -r win10-x64 - ou simplement construire.

Etape 5 : vous pouvez remarquer que le .exe a été créé sous debug/netcore/win10/.

2voto

Serj Sagan Points 2731

Sur ASP.NET Core essayez de changer votre application type à default en project.json :

"Microsoft.NETCore.App": {
  "type": "default",
  "version": "1.0.0-*"
}

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