Domanda Crea file .exe in .NET Core RC2


Ogni volta che costruisco un progetto utilizzando i nuovi modelli .NET Core RC2 sono non fornito con un runnable.EXE file. Se premo F5 per il debug della mia applicazione per console, funziona correttamente

C:\Program Files\dotnet\dotnet.exe 

applicazione. E se io uso il

dotnet run 

comando nella cartella, funziona egregiamente. Ma non vedo alcun modo per eseguire l'applicazione senza gli strumenti CLI di .NET Core.

Il contenuto del mio

 bin\Debug\netcoreapp1.0\

la cartella appare così:

Bin folder structure

Come puoi vedere, non c'èEXE file disponibile. Solo la DLL.

Sto trascurando qualcosa? O c'è qualcosa di sbagliato nel mio file 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"
    }
  }
}

Grazie!


71
2018-05-23 12:16


origine


risposte:


Ci sono in realtà 2 modelli di app in .NET Core:

  • App portatili: fortemente ispirato alle "app console DNX", queste app non producono .exe file e vengono invece eseguiti dal runtime condiviso .NET Core (la cui versione è definita dal file Microsoft.NETCore.App pacchetto, grazie al suo speciale type: platform attributo). Il corrispondente runtime di .NET Core deve essere installato sulla macchina per poter utilizzare le app portatili. Se non è possibile trovare la versione esatta, viene generata un'eccezione durante l'esecuzione dotnet run.

  • App standalone: le app standalone sono molto simili alle buone vecchie app della console .NET man mano che producono .exe File. Il runtime di .NET Core non deve essere installato sulla macchina, perché è direttamente integrato con l'applicazione stessa.

Attualmente stai utilizzando il primo modello. Per utilizzare il modello standalone, è necessario modificare il tuo project.json:

  • Aggiungere un runtimes sezione per elencare gli ambienti target della tua app (ad es win7-x64 o ubuntu.14.04-x64). Puoi trovare la lista completa Qui.
  • Rimuovi il Microsoft.NETCore.App dipendenza. Puoi sostituirlo con questo pacchetto: "NETStandard.Library": "1.5.0-rc2-24027".

Ecco un esempio di app standalone:

{
  "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": { }
  }
}

68
2018-05-23 14:02



La risposta è nel documentazione con passaggi completi ora.

È possibile creare due tipi di distribuzioni per le applicazioni .NET Core:

  1. Implementazione dipendente dal framework
  2. Implementazione autonoma

Per un file .EXE eseguibile, il Implementazione autonoma dovrebbe essere usato.


11
2017-10-30 08:12



Per creare un'applicazione eseguibile da un'applicazione della console .NET Core, è possibile utilizzare strumento dotnet. Esegui semplicemente nella directory del tuo progetto:

dotnet publish --runtime win7-x64

Questo crea un'app standalone (distribuzione autonoma, include tutte le librerie necessarie che consumano almeno 60 MB sul disco). Ovviamente puoi anche scegliere altri runtime, come osx.10.11-x64 o ubuntu.16.04-x64.

Se hai usato la configurazione di default (New Project -> Console App (.NET Core)), non è necessaria alcuna modifica di alcun file di configurazione.


4
2018-01-24 07:59



passaggio 1: rimuovere "type": "platform", da Project.json sotto frameworks sezione

passo 2: aggiungi la sezione runtime al tuo progetto.json. Nota ogni sezione è separata da una virgola. Aggiungi il tuo runtime. di seguito è solo un esempio per la vittoria 10.

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

Passaggio 3: comando di ripristino dotnet sul progetto. (apri cmd, vai nella cartella del tuo progetto dovunque ci sia la cartella src, esegui il riavvio dotnet)

fase 4: dotnet packfase 4: dotnet build -r win10-x64 - o semplicemente costruisci.

Passaggio 5: puoi notare .exe creato sotto debug / netcore / win10 /


3
2018-02-13 16:29



In ASP.NET Core prova a cambiare la tua app type a default, in project.json:

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

2
2017-10-06 02:10