Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Programmazione/CSharp"
Differenze tra le versioni 18 e 19
Versione 18 del 24/02/2019 18.35.35
Dimensione: 3612
Autore: dd3my
Commento: nuovo stile note/avvisi/suggerimenti
Versione 19 del 01/01/2023 23.31.04
Dimensione: 7995
Commento: aggiornamento completo (copia da rafbor/TestCSharp)
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 4: Linea 4:
<<Include(NuoviStrumentiWiki/PaginaDiProva)>>
Linea 5: Linea 6:
<<Informazioni(forum="https://forum.ubuntu-it.org/viewtopic.php?f=46&t=651540"; rilasci="20.04 22.04")>>
Linea 8: Linea 10:
'''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 da ECMA (European Computer Manufacturers Association). Si ispira ai linguaggi C/C++ e Java, ma con diverse caratteristiche e miglioramenti rispetto questi: '''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).<<BR>>
Si ispira ai linguaggi C/C++ e Java, ma rispetto a questi integra diverse nuove caratteristiche e miglioramenti:
Linea 10: Linea 13:
 * possibilità di utilizzare i puntatori, ma solo in particolari zone di codice definite '''unsafe''';  * possibilità di utilizzare i puntatori, ma solo in particolari zone di codice definite ''unsafe'';
Linea 12: Linea 15:
 * come in Java è possibile ereditare da una sola classe;  * è possibile ereditare da una sola classe (come in Java);
Linea 16: Linea 19:
Per GNU/Linux il linguaggio C# è presente all'interno del framework '''Mono''', libera implementazione multipiattaforma (Mono è disponibile anche per Windows) di .NET. Per programmare in '''C#''' su GNU/Linux è ancora disponibile il framework [[https://www.mono-project.com/|Mono]], un'implementazione libera e multi-piattaforma di Microsoft .NET. Tuttavia è generalmente considerato ormai superato, in quanto corrisponde al .NET Framework 4.x.<<BR>>
La soluzione attualmente consigliata è '''[[https://docs.microsoft.com/it-it/dotnet/core/introduction|.NET]]''', piattaforma gratuita, multipiattaforma e open source.
Linea 18: Linea 22:
= Installazione = = Installazione di .NET =
Linea 20: Linea 24:
Dalla versione 6.10 (Edgy Eft), alcune parti di '''Mono''' sono presenti nell'installazione di Ubuntu, data l'inclusione in GNOME di alcuni programmi scritti in C# ('''Tom''''''Boy''' e '''F-Spot'''). È possibile installare:
 * '''.NET''' con il solo '''Runtime''' per eseguire applicazioni
 * '''.NET [[https://it.wikipedia.org/wiki/Software_development_kit|SDK]]''' necessario per sviluppare e comprensivo del '''Runtime'''
Linea 22: Linea 28:
Per l'installazione è consigliato l'uso dello strumento [[AmministrazioneSistema/Synaptic|Synaptic]] presente in '''''Sistema -> Amministrazione -> Synaptic''''', dato che riesce a risolvere le dipendenze automaticamente. In entrambi i casi seguire le istruzioni di [[https://learn.microsoft.com/it-it/dotnet/core/install/linux-ubuntu|questa guida]].
Linea 24: Linea 30:
I pacchetti principali sono:
 * ''mono'', ''mono-runtime'', ''mono-utils'', ''mono-mcs'' e ''mono-gmcs'' (i compilatori), ''mono-common'', ''libmono2.0-cil''
 * ''monodoc'', ''monodoc-base'' e ''monodoc-browser'' per '''Mono``Doc''', la documentazione di '''Mono'''
 * ''monodevelop'', ambiente di sviluppo per '''Mono'''.
{{{#!wiki note
.NET 6 è incluso nei repository di Ubuntu 22.04 e 22.10 (chiamati «feed di gestione pacchetti» nella guida Microsoft).
}}}
Linea 29: Linea 34:
= Semplici comandi = Per verificare la versione SDK installata digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
dotnet --list-sdks
}}}
L'output sarà simile al seguente {{{
6.0.404 [/usr/share/dotnet/sdk]
}}}
Linea 31: Linea 41:
Una volta installato tutto il necessario, iniziamo con un semplice programma. 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]
}}}
Linea 33: Linea 49:
Aprite un editor di testo e scrivete quanto segue:
{{{#!cplusplus
= Strumenti per lo sviluppo =

Un progetto .NET è composto da una molti file. Quindi si consiglia di utilizzare un IDE orientato allo sviluppo (ad esempio '''[[https://www.jetbrains.com/rider/|JetBrains Rider]]''', proprietario e a pagamento) oppure un editor avanzato (ad esempio '''[[Ufficio/EditorDiTesto/VisualStudioCode|VisualStudioCode]]''', con licenza libera e gratuita).

= Creare un'applicazione console .NET senza utilizzare un IDE =

 0. Creare una cartella `TestHelloWorld` nella propria '''Home'''.
 0. Aprire un [[AmministrazioneSistema/Terminale|terminale]] e spostarsi in questa cartella.
 0. 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: {{{#!cplusplus
namespace TestHelloWorld;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}
}}}
 0. Eseguire il seguente comando: {{{
dotnet run
}}}
 Il risultato sarà:{{{
Hello, World!
}}}

Per ulteriori informazioni consultare [[https://learn.microsoft.com/it-it/dotnet/core/tutorials/with-visual-studio-code?pivots=dotnet-6-0|questa pagina]].

= Creazione di un'applicazione con GUI in VisualStudioCode =

Prerequisiti:
 * per sviluppare in C#, deve essere installata l'estensione '''[[https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp|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 [[https://code.visualstudio.com/docs/editor/extension-gallery|questa guida]].
 * per creare una GUI si deve utilizzare un framework a scelta, come [[https://learn.microsoft.com/it-it/dotnet/maui/what-is-maui?view=net-maui-7.0|MAUI]] (per Linux viene sviluppato dalla comunità), [[https://platform.uno/|Uno]], [[https://avaloniaui.net/|AvaloniaUI]] o [[https://github.com/GtkSharp/GtkSharp|GtkSharp]]. Nell'esempio successivo verrà usato quest'ultimo.

Seguire la procedura descritta di seguito.

 0. Nel terminale di '''!VisualStudioCode''' eseguire il seguente comando per installare il template:{{{
dotnet new --install GtkSharp.Template.CSharp
}}}
 0. 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
}}}
 0. Selezionare dal menù principale '''''File → Apri cartella'''''.
 0. Nella finestra di dialogo '''Apri cartella''' creare una cartella `TestGUI` e selezionarla.
 0. Fare quindi clic su '''Aprire'''. Per impostazione predefinita il nome della cartella diventerà il nome e il ''namespace'' del progetto.
 0. 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 [[Programmazione/Python/Glade|Glade]]. Il file `MainWindow.cs` mostra come integrare i file `.glade` in un progetto e come gestire gli eventi: {{{#!cplusplus
Linea 36: Linea 104:
using Gtk;
using UI = Gtk.Builder.ObjectAttribute;
Linea 37: Linea 107:
namespace CiaoMondo namespace TestGUI
Linea 39: Linea 109:
 class Mondo
 {
  public static void Main(string[] args)
  {
   Console.WriteLine("Ciao mondo!");
  }
 }
    class MainWindow : Window
    {
        [UI] private Label _label1 = null;
        [UI] private Button _button1 = null;

        private int _counter;

        public MainWindow() : this(new Builder("MainWindow.glade")) { }

        private MainWindow(Builder builder) : base(builder.GetRawOwnedObject("MainWindow"))
        {
            builder.Autoconnect(this);

            DeleteEvent += Window_DeleteEvent;
            _button1.Clicked += Button1_Clicked;
        }

        private void Window_DeleteEvent(object sender, DeleteEventArgs a)
        {
            Application.Quit();
        }

        private void Button1_Clicked(object sender, EventArgs a)
        {
            _counter++;
            _label1.Text = "Hello World! This button has been clicked " + _counter + " time(s).";
        }
    }
Linea 49: Linea 140:
Salvate il file come `ciao.cs` e compilatelo con: {{{
gmcs ciao.cs
Per avviare l'applicazione, basterà eseguire nel terminale:{{{
dotnet run
Linea 52: Linea 143:
Se è stato scritto tutto giusto, avrete un file `ciao.exe` (sì, un file `.exe` in Linux!). Per eseguirlo basta semplicemente digitare: {{{
./ciao.exe
}}}
oppure: {{{
mono ciao.exe
}}}
Il risultato sarà una finestra con il testo «`Hello World!`» al centro e un pulsante «'''Click me!'''» in basso.
Linea 59: Linea 145:
Il file `.exe` creato è possibile eseguirlo anche sotto Windows!
{{{#!wiki note
Il comando ''gmcs'' indica l'utilizzo del compilatore per C# 2.0, se si desidera utilizzare il compialtore per la versione 1.0 esiste il comando ''mcs''.}}}
= Pubblicazione =
Linea 63: Linea 147:
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 [[https://learn.microsoft.com/it-it/dotnet/core/deploying/|questa pagina]]
Linea 66: Linea 153:
Per i più curiosi, nelle pagine seguenti, proponiamo alcuni programmi a difficoltà crescente:

 * [[/Listati|Listati]] <<BR>>
 Esempi di alcuni programmi scritti in C# a difficoltà crescente
Per gli utenti desiderosi di approfondimento, in [[/Listati|questa pagina]] vengono proposti degli esempi di programmi scritti in '''C#''' a difficoltà crescente.
Linea 73: Linea 157:
 * [[http://www.mono-project.com/Main_Page|Il sito web del progetto Mono]]  * [[https://learn.microsoft.com/it-it/dotnet/csharp/|Documentazione Microsoft per C#]]
 * [[https://learn.microsoft.com/it-it/dotnet/fundamentals/|Documentazione Microsoft .NET]]
 * [[http://www.csharphelp.com/|C# Help]] (consigli su C#)
 * [[http://www.c-sharpcorner.com/|C# Corner]] (consigli su C#)
 * [[http://visualcsharp.it/default.aspx|Comunità italiana di sviluppo con C# e .NET]]
 * [[http://www.mono-project.com/Main_Page|Sito ufficiale del progetto Mono]]
Linea 75: Linea 164:
 * [[http://www.csharphelp.com/|Un sito con molti consigli su C#]]
 
 * [[http://www.c-sharpcorner.com/|Altro sito con molti consigli su C#]]

 * [[http://www.gotdotnet.com/|Comunità basata sull'utilizzo del framework .NET]]
 
 * [[http://msdn2.microsoft.com/en-us/library/ms229335.aspx|Il sito di Microsoft contenente tutta la documentazione necessaria per C#]]

 * [[http://visualcsharp.it/default.aspx|Comunità italiana di sviluppo con C# e .NET]]

 * Per la documentazione relativa a '''mono''', è possibile utilizzare lo strumento '''monodoc''' da '''''Applicazioni -> Programmazione -> Monodoc'''''.
Linea 87: Linea 165:
CategoryProgrammazione CategoryDaRevisionare CategoryProgrammazione


Attenzione! Questa è una Pagina di prova. Le informazioni riportate potrebbero essere incomplete, errate e potenzialmente pericolose. Per contribuire alla realizzazione di questa pagina consultare la discussione di riferimento.

Guida verificata con Ubuntu: 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

  1. Creare una cartella TestHelloWorld nella propria Home.

  2. Aprire un terminale e spostarsi in questa cartella.

  3. 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:

       1 namespace TestHelloWorld;
       2 class Program
       3 {
       4     static void Main(string[] args)
       5     {
       6         Console.WriteLine("Hello, World!");
       7     }
       8 }
    
  4. 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.

  1. Nel terminale di VisualStudioCode eseguire il seguente comando per installare il template:

    dotnet new --install GtkSharp.Template.CSharp
  2. 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
  3. Selezionare dal menù principale File → Apri cartella.

  4. Nella finestra di dialogo Apri cartella creare una cartella TestGUI e selezionarla.

  5. Fare quindi clic su Aprire. Per impostazione predefinita il nome della cartella diventerà il nome e il namespace del progetto.

  6. 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

Esempi

Per gli utenti desiderosi di approfondimento, in questa pagina vengono proposti degli esempi di programmi scritti in C# a difficoltà crescente.

Ulteriori risorse


CategoryProgrammazione