Difference between revisions of "CSharp:Linux App - primi step"
From Aino Wiki
(→Mappa e Link) |
(No difference)
|
Latest revision as of 09:43, 27 May 2024
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: