Guida verificata con Ubuntu: 20.04 22.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
C# (pronunciato «C sharp»), è un linguaggio di programmazione orientato agli oggetti sviluppato da Microsoft per la piattaforma .NET (pronunciato «dot net»). Le specifiche del linguaggio sono state standardizzate dalla ECMA (European Computer Manufacturers Association).
Si ispira ai linguaggi C/C++ e Java, ma rispetto a questi integra diverse nuove caratteristiche e miglioramenti:
- tutto è un oggetto;
possibilità di utilizzare i puntatori, ma solo in particolari zone di codice definite unsafe;
- sono consentite solo conversioni implicite, dove non ci sia perdita di dati;
- è possibile ereditare da una sola classe (come in Java);
- overloading degli operatori;
presenza di namespace al posto dei package di Java.
Per programmare in C# su GNU/Linux è ancora disponibile il framework Mono, un'implementazione libera e multi-piattaforma di Microsoft .NET. Tuttavia è generalmente considerato ormai superato, in quanto corrisponde al .NET Framework 4.x.
La soluzione attualmente consigliata è .NET, piattaforma gratuita, multipiattaforma e open source.
Installazione di .NET
È possibile installare:
.NET con il solo Runtime per eseguire applicazioni
.NET SDK necessario per sviluppare e comprensivo del Runtime
In entrambi i casi seguire le istruzioni di questa guida.
.NET 6 è incluso nei repository di Ubuntu 22.04 e 22.10 (chiamati «feed di gestione pacchetti» nella guida Microsoft).
Per verificare la versione SDK installata digitare nel terminale il seguente comando:
dotnet --list-sdks
L'output sarà simile al seguente
6.0.404 [/usr/share/dotnet/sdk]
Per verificare la versione del runtime installato:
dotnet --list-runtimes
L'output sarà simile al seguente
Microsoft.AspNetCore.App 6.0.12 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 6.0.12 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
Strumenti per lo sviluppo
Un progetto .NET è composto da una molti file. Quindi si consiglia di utilizzare un IDE orientato allo sviluppo (ad esempio JetBrains Rider, proprietario e a pagamento) oppure un editor avanzato (ad esempio VisualStudioCode, con licenza libera e gratuita).
Creare un'applicazione console .NET senza utilizzare un IDE
Creare una cartella TestHelloWorld nella propria Home.
Aprire un terminale e spostarsi in questa cartella.
Digitare il seguente comando:
dotnet new console --use-program-main
In questo modo verranno creati diversi file. Il file di codice Program.cs conterrà le seguenti righe:
Eseguire il seguente comando:
dotnet run
Il risultato sarà:
Hello, World!
Per ulteriori informazioni consultare questa pagina.
Creazione di un'applicazione con GUI in VisualStudioCode
Prerequisiti:
per sviluppare in C#, deve essere installata l'estensione C# (normalmente l'editor propone di installarla quando si apre un file C#); per installare le estensioni di VisualStudioCode nel VS Code Extension Marketplace consultare questa guida.
per creare una GUI si deve utilizzare un framework a scelta, come MAUI (per Linux viene sviluppato dalla comunità), Uno, AvaloniaUI o GtkSharp. Nell'esempio successivo verrà usato quest'ultimo.
Seguire la procedura descritta di seguito.
Nel terminale di VisualStudioCode eseguire il seguente comando per installare il template:
dotnet new --install GtkSharp.Template.CSharp
Controllare che il template sia presente con il seguente comando:
dotnet new --list | grep gtkapp
Se tutto è corretto, l'output sarà il seguente:
Gtk Application gtkapp [C#] Gtk/GUI App
Selezionare dal menù principale File → Apri cartella.
Nella finestra di dialogo Apri cartella creare una cartella TestGUI e selezionarla.
Fare quindi clic su Aprire. Per impostazione predefinita il nome della cartella diventerà il nome e il namespace del progetto.
Nel terminale eseguire il seguente comando:
dotnet new gtkapp
Verranno creati diversi file, tra cui MainWindow.glade, che è il file di descrizione del form da modificare successivamente con Glade. Il file MainWindow.cs mostra come integrare i file .glade in un progetto e come gestire gli eventi:
1 using System; 2 using Gtk; 3 using UI = Gtk.Builder.ObjectAttribute; 4 5 namespace TestGUI 6 { 7 class MainWindow : Window 8 { 9 [UI] private Label _label1 = null; 10 [UI] private Button _button1 = null; 11 12 private int _counter; 13 14 public MainWindow() : this(new Builder("MainWindow.glade")) { } 15 16 private MainWindow(Builder builder) : base(builder.GetRawOwnedObject("MainWindow")) 17 { 18 builder.Autoconnect(this); 19 20 DeleteEvent += Window_DeleteEvent; 21 _button1.Clicked += Button1_Clicked; 22 } 23 24 private void Window_DeleteEvent(object sender, DeleteEventArgs a) 25 { 26 Application.Quit(); 27 } 28 29 private void Button1_Clicked(object sender, EventArgs a) 30 { 31 _counter++; 32 _label1.Text = "Hello World! This button has been clicked " + _counter + " time(s)."; 33 } 34 } 35 }
Per avviare l'applicazione, basterà eseguire nel terminale:
dotnet run
Il risultato sarà una finestra con il testo «Hello World!» al centro e un pulsante «Click me!» in basso.
Pubblicazione
Per la distribuzione di una applicazione, .NET permette di pubblicare una versione standalone che include il runtime .NET o una versione più leggera senza il runtime (in questo caso l'utente dovrà installare il runtime sul suo PC).
Per ulteriori informazioni consultare questa pagina.
Script
Consultare questa guida.
Esempi
Per gli utenti desiderosi di approfondimento, in questa pagina vengono proposti degli esempi di programmi scritti in C# a difficoltà crescente.
Risoluzione dei problemi
Questa pagina della documentazione ufficiale Microsoft contiene soluzioni e link relativi a diversi problemi, fra cui errori relativi ai comandi:
dotnet new dotnet run