Login Login
MORE

WIDGETS

Widgets

Wanted articles
Who is online?
Article tools

Difference between revisions of "CSharp:Linux App - primi step"

From Aino Wiki

Jump to: navigation, search
(Mappa e Link)
 
(No difference)

Latest revision as of 09:43, 27 May 2024

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

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:

CoreCA Linux 01.png

si crea una solution di test di tipo Console Application:

CoreCA Linux 02.png

Il target framework sarà il Core .NET 5.0 nato per astrarre dal Sistema Operativo, purtroppo ora è "Out of support":

CoreCA Linux 03.png

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:

CoreCA Linux 04.png

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
CoreCA Linux 05.png

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:

400px200px

PS questo semplice esempio di applicazione self contained, "ciao mondo", pesa 77 MByte.

Mappa e Link


C# | Linux App


Linux | Android App | Visual Studio | MS SQL | Dizionario


Parole chiave: