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 8 e 24 (in 16 versioni)
Versione 8 del 21/09/2007 20.27.14
Dimensione: 3812
Commento: toc 35
Versione 24 del 02/02/2025 12.05.28
Dimensione: 8364
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
#format wiki
Linea 2: Linea 3:
[[BR]]
||<tablestyle="float:right; font-size: 0.9em; width:35%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents]]||
<<BR>>
<<Indice>>
<<Informazioni(forum="https://forum.ubuntu-it.org/viewtopic.php?f=46&t=651540"; rilasci="20.04 22.04 24.04")>>
Linea 7: Linea 9:
'''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 9: Linea 12:
 * 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 11: Linea 14:
 * come in Java è possibile ereditare da una sola classe;  * è possibile ereditare da una sola classe (come in Java);
Linea 15: Linea 18:
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 17: Linea 21:
= Installazione = = Installazione di .NET =
Linea 19: Linea 23:
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 21: Linea 27:
Per l'installazione è consigliato l'uso dello strumento [:SynapticHowto: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 23: Linea 29:
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
A partire da Ubuntu 22.04, .NET è incluso nei [[Repository#Repository_ufficiali|repository ufficiali]] (chiamati «feed di gestione pacchetti» nella guida Microsoft).
}}}
Linea 28: Linea 33:
= 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 {{{
8.0.112 [/usr/lib/dotnet/sdk]
}}}
Linea 30: Linea 40:
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 8.0.12 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 8.0.12 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]
}}}
Linea 32: Linea 48:
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 35: Linea 103:
using Gtk;
using UI = Gtk.Builder.ObjectAttribute;
Linea 36: Linea 106:
namespace CiaoMondo namespace TestGUI
Linea 38: Linea 108:
 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 48: Linea 139:
Salvate il file come `ciao.cs` e compilatelo con: {{{
gmcs ciao.cs
Per avviare l'applicazione, basterà eseguire nel terminale:{{{
dotnet run
Linea 51: Linea 142:
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 58: Linea 144:
Il file `.exe` creato è possibile eseguirlo anche sotto Windows! = Pubblicazione =
Linea 60: Linea 146:
[[Immagine(Icone/Piccole/note.png,80,left)]] 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''.[[BR]][[BR]] 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]].

= Script =

Consultare [[Programmazione/CSharp/Script|questa guida]].
Linea 64: Linea 156:
Per i più curiosi, nelle pagine seguenti, proponiamo alcuni programmi 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 66: Linea 158:
 * [:LinguaggioCSharp/Listati:LinguaggioCSharp/Listati] [[BR]]
 Esempi di alcuni programmi scritti in C# a difficoltà crescente
= Risoluzione dei problemi =
Linea 69: Linea 160:
= Risorse =

 * [http://www.mono-project.com/Main_Page] [[BR]]
 Il sito web del progetto Mono

 * [http://www.csharphelp.com/] [[BR]]
 Un sito con molti consigli su C#

 * [http://www.c-sharpcorner.com/] [[BR]]
 Altro sito con molti consigli su C#

 * [http://www.gotdotnet.com/] [[BR]]
 Comunità basata sull'utilizzo del framework .NET

 * [http://msdn2.microsoft.com/en-us/library/ms229335.aspx MSDN] [[BR]]
 Il sito di Microsoft contenente tutta la documentazione necessaria per C#

 * [http://visualcsharp.it/default.aspx] [[BR]]
 Comunità italiana di sviluppo con C# e .NET
[[https://learn.microsoft.com/it-it/dotnet/core/install/linux-package-mixup|Questa pagina]] della documentazione ufficiale Microsoft contiene soluzioni e link relativi a diversi problemi, fra cui errori relativi ai comandi:{{{
dotnet new
dotnet run
}}}
Linea 90: Linea 166:
Per la documentazione relativa a '''mono''', è possibile utilizzare lo strumento '''monodoc''' da '''''Applicazioni -> Programmazione -> Monodoc'''''. = Ulteriori risorse =

 * [[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]]


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

A partire da Ubuntu 22.04, .NET è incluso nei repository ufficiali (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

8.0.112 [/usr/lib/dotnet/sdk]

Per verificare la versione del runtime installato:

dotnet --list-runtimes

L'output sarà simile al seguente

Microsoft.AspNetCore.App 8.0.12 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 8.0.12 [/usr/lib/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.

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

Ulteriori risorse


CategoryProgrammazione