Esecuzione di un’applicazione di base ASP .NET autonoma su Ubuntu

Per prima cosa, sono un principiante di Linux quindi perdonami.

Ho pubblicato un’applicazione ASP .NET Core come app indipendente indirizzata a Ubuntu. La pubblicazione sembra funzionare bene. Ho copiato i file su una bella macchina Ubuntu di vaniglia. Ora, come posso eseguire la mia applicazione? La mia comprensione è che, poiché è un’applicazione .NET Core autonoma, NON DEVO scaricare e installare nulla di .NET Core. La mia app dovrebbe contenere tutto ciò di cui ha bisogno.

Tutti i tutorial sembrano dire che dovrei chiamare $ dotnet run. Tuttavia la riga di comando “dotnet” non esiste (dovrebbe essere pubblicata nella cartella autonoma ??) Quindi se la chiamo, ottengo “comando non trovato”. Naturalmente potrei scaricare .NET Core, ma non va contro l’intero concetto autonomo? Ecco un esempio dei file su cui sto copiando.

inserisci la descrizione dell'immagine qui

Risposta

Ora, come posso eseguire la mia applicazione? La mia comprensione è che, poiché è un’applicazione .NET Core autonoma, NON DEVO scaricare e installare nulla di .NET Core. La mia app dovrebbe contenere tutto ciò di cui ha bisogno.

Hai ragione. Esegui l’eseguibile.

Quando crei un’applicazione indipendente, l’output di pubblicazione “contiene il set completo di file (sia i file dell’app che tutti i file .NET Core) necessari per avviare la tua app.” Questo include l’eseguibile.

Esempio di distribuzione autonoma

Ecco l’output di dotnet publish -c release -r ubuntu.14.04-x64 per una semplice applicazione autonoma. Copia la directory di pubblicazione su Ubuntu ed esegui l’eseguibile.

C: \ MyApp \ bin \ release \ netcoreapp1.0 \ ubuntu.14.04-x64 \ pubblicare \

 ... libsos.so libsosplugin.so libuv.so Microsoft.CodeAnalysis.CSharp.dll Microsoft.CodeAnalysis.dll Microsoft.CodeAnalysis.VisualBasic.dll Microsoft.CSharp.dll Microsoft.VisualBasic.dll Microsoft.Win32.Primitives.dll Microsoft.Win32.Registry.dll mscorlib.dll mscorlib.ni.dll MyApp <------- On Ubuntu, run this executable MyApp.deps.json and you will see Hello World! MyApp.dll MyApp.pdb MyApp.runtimeconfig.json sosdocsunix.txt System.AppContext.dll System.Buffers.dll System.Collections.Concurrent.dll System.Collections.dll ... 

C: \ MyApp \ project.json

 { "buildOptions": { "debugType": "portable", "emitEntryPoint": true }, "dependencies": {}, "frameworks": { "netcoreapp1.0": { "dependencies": { "Microsoft.NETCore.App": "1.0.1" } } }, "runtimes": { "ubuntu.14.04-x64" : {}, "win10-x64" : {} } } 

C: \ MyApp \ Program.cs

 public class Program { public static void Main(string[] args) { System.Console.WriteLine("Hello World!"); } } 

Guarda anche

Questo documento distingue tra distribuzioni dipendenti dal framework e indipendenti.

Vale la pena notare che con .netstandard2 +, ci sono due passaggi obbligatori:

  • Modifica il file .csproj e aggiungi una riga con un elenco dei runtime di destinazione:

 Exe netcoreapp2.0  win10-x64;osx.10.11-x64;ubuntu.16.10-x64 

  • Ripristina e crea l’app: dotnet restore && dotnet build -c release -r RUNTIME

Dove RUNTIME è uno dei runtime elencati nel file csproj.

È importante notare che non è ansible eseguire questa operazione senza la modifica del file .csproj e chiamando il ripristino dotnet, altrimenti il ​​runtime non verrà scaricato da nuget e il flag -r ... non funzionerà.

Si consiglia di controllare anche l’ imballaggio con dotnet . Include un’utilità della riga di comando dotnet deb che consente di creare un file .deb (ad esempio un programma di installazione di Ubuntu) che è ansible utilizzare per installare l’app su Ubuntu. Dovrebbe rendere la distribuzione più facile per te.

Per iniziare, devi prima aggiungere questa sezione al tuo file .csproj :

     

Quindi, eseguire dotnet restore e dotnet deb -c Release -r ubuntu.18.04-x64 -f netcoreapp2.0 . Questo creerà un file .deb che puoi usare per distribuire la tua applicazione su Ubuntu.