CSharp:Linux App - primi step
From Aino Wiki
Contents
Siviluppi per Linux
Introduzione
Storicamente Microsoft ha realizzato .Net Core allo scopo di offrire uno strumento di sviluppo di applicazioni eseguibili su diversi Sistemi Operativi (cross-platform) come appunto Linux. Dal 2015 è uno strumento open source.
Dalla versione 5 è stato rinominato in .Net x, dove x è la versione di questo framework, attualmente, 26/05/2024, si è arrivati alla versione .Net 9 (stabile la 8), la versione .Net 5 non è più supportata.
Pubblicazione
La pubblicazione di una applicazione su Linux può avvenire mediante due metodi:
- "Self-contained". In questo modo l'applicazione includerà i runtime .NET e le librerie necessarie all'esecuzione dell'applicazione e delle sue dipendenza. L'utente dell'applicazione potrà eseguirla senza installare alcun runtime .NET.
- "Framework-dependent". La pubblicazione riguarderà la sola applicazione e sue associate dipendenze questo solo perché preventivamente sarà stato necessario instalare i runtime .NET. L'installazione dei runtime .NET sarà eseguita una volta per tutte quindi le successive applicazioni sono già predisposte ad essere eseguite con la sola loro singola pubblicazione.
Materiale
- Iniziare su Red Hat 8, libro on-line: Sviluppo applicazioni .Net
- Prima app developers.redhat.com
- Eserciztazione .Net
Configurazione
Compilatore "dotnet"
Il deploy degli applicativi si esegue aprendo una finestra "Developer command Prompt" e compilando mediante dotnet
con parametri ed opzioni opportune.
Per visualizzare le tipologie di runtimes supportati eseguire:
C:\> dotnet --list-runtimes
dotnet publish
Compila e pubblica l'aplicazione e le sue dipendenze in un folder di deployment.
dotnet publish [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>] [--artifacts-path <ARTIFACTS_DIR>] [-c|--configuration <CONFIGURATION>] [--disable-build-servers] [-f|--framework <FRAMEWORK>] [--force] [--interactive] [--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies] [--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>] [--os <OS>] [-r|--runtime <RUNTIME_IDENTIFIER>] [--sc|--self-contained [true|false]] [--no-self-contained] [-s|--source <SOURCE>] [--tl:[auto|on|off]] [--use-current-runtime, --ucr [true|false]] [-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>] dotnet publish -h|--help
L'output include i seguenti assets:
- Intermediate Language (IL) code nell'assembly con le dll di estensione.
- Un file
.deps.json<code> che include l'elenco di tutte le dipendenze del progetto.
- Un file <code>.runtimeconfig.json con l'elenco dei runtime condivisi di cui l'aplicazione encessita, ha anche altri parametri di configurazione (es., garbage collection type).
- Le dipendenze dell'applicazione che sono copiate dalla cache NuGet nella cartella di output.
Esempi
Hello Word
Nel seguente esempio si creerà una Applicazione Console con .Net Core 5 (attualmente fuori assistenza), l'applicazione è destinata a Linux ma nella versione Ubuntu (testato con la ver. 22.04.2 64-bit).
- Su una macchina Windows, si compila da linea comando, il codice nella versione release ma Self-Contained; si usa
dotnet publish
; - Si copia la cartella "
publish
" creatasi su Windows nella cartella di destinazione su Linux. - Da terminale si assegnano i diritti di esecuzione, 777, all'eleguibile compilato.
Creazione Solution VisualStudio
Aperto Visual Studio, si crea un nuovo progetto:
si crea una solution di test di tipo Console Application:
Il target framework sarà il Core .NET 5.0 nato per astrarre dal Sistema Operativo, purtroppo ora è "Out of support":
nel file di avvio Program.cs
si predispone quanto segue:
using System; namespace CoreCA_LinuxTest { class Program { static void Main(string[] args) { Console.WriteLine("Ciao Mondo!"); Console.ReadLine(); } } }
A scopo di test si esegue l'applicazione console premendo il tasto F5 o cliccando sul tasto Play:
Pubblicazione e compilazione per Ubuntu
Nella cartella Windows contenente il codice sorgente, quella col file di solution, si digita da prompt DOS (Developer Command Prompt):
dotnet publish -c release -r ubuntu.16.04-x64 --self-contained
- Microsoft DotNet help dotnet command
- Nell'esempio si è usato il RuntimeIdentifier RID "ubuntu.16.04-x64", qui un help RID Catalog
Esecuzione su Linux
Si copia la cartella "publish
" in una cartella accessibile a Linux come nel seguente esempio e da una finestra terminale Linux dopo essersi posti nella cartella con il nuovo eseguibile, si assegnano i diritti di esecuzione, 777:
chmod 777 ./appname
e si esegue l'applicazione:
./appname
Ovvero:
PS questo semplice esempio di applicazione self contained, "ciao mondo", pesa 77 MByte.
Mappa e Link
Linux | Android App | Visual Studio | MS SQL | Dizionario
Parole chiave: