Esercitazione: Creare una libreria di classi .NET con Visual Studio Code

In questa esercitazione viene creata una semplice libreria di utilità che contiene un singolo metodo di gestione delle stringhe.

La libreria di classi definisce tipi e metodi chiamati da un'applicazione. Se la libreria è destinata a .NET Standard 2.0, può essere chiamata da qualsiasi implementazione di .NET (incluso .NET Framework) che supporti .NET Standard 2.0. Se la libreria è destinata a .NET 8, può essere chiamata da qualsiasi applicazione destinata a .NET 8. Questa esercitazione illustra come usare .NET 8 come destinazione.

Quando si crea una libreria di classi, è possibile distribuirla come componente di terze parti o come componente in bundle con una o più applicazioni.

Prerequisiti

Creazione di una soluzione

Per iniziare, creare una soluzione vuota in cui inserire il progetto di libreria di classi. Una soluzione funge da contenitore per uno o più progetti. Si aggiungeranno altri progetti correlati alla stessa soluzione.

  1. Avviare Visual Studio Code.

  2. Selezionare File>Apri cartella (Apri... in macOS) dal menu principale

  3. Nella finestra di dialogo Apri cartella, creare una cartella ClassLibraryProjects e fare clic su Seleziona cartella (Apri in macOS).

  4. Aprire il terminale in Visual Studio Code selezionando Visualizza>terminale dal menu principale.

    Il terminale viene aperto con il prompt dei comandi nella cartella ClassLibraryProjects.

  5. Nel Terminale immettere il comando seguente:

    dotnet new sln
    

    L'output del terminale è simile all'esempio seguente:

    The template "Solution File" was created successfully.
    

Creare un progetto di libreria di classi

Aggiungere alla soluzione un nuovo progetto di libreria di classi .NET denominato "StringLibrary".

  1. Nel terminale eseguire il comando seguente per creare il progetto di libreria:

    dotnet new classlib -o StringLibrary
    

    Il comando -o o --output specifica il percorso in cui inserire l'output generato.

    L'output del terminale è simile all'esempio seguente:

    The template "Class library" was created successfully.
    Processing post-creation actions...
    Running 'dotnet restore' on StringLibrary\StringLibrary.csproj...
      Determining projects to restore...
      Restored C:\Projects\ClassLibraryProjects\StringLibrary\StringLibrary.csproj (in 328 ms).
    Restore succeeded.
    
  2. Eseguire il comando seguente per aggiungere il progetto di libreria alla soluzione:

    dotnet sln add StringLibrary/StringLibrary.csproj
    

    L'output del terminale è simile all'esempio seguente:

    Project `StringLibrary\StringLibrary.csproj` added to the solution.
    
  3. Verificare che la libreria sia destinata a .NET 8. In Esplora risorse, aprire StringLibrary/StringLibrary.csproj.

    L'elemento TargetFramework mostra che il progetto è destinato a .NET 8.0.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
      </PropertyGroup>
    
    </Project>
    
  4. Aprire Class1.cs e sostituire il codice con il codice seguente.

    namespace UtilityLibraries;
    
    public static class StringLibrary
    {
        public static bool StartsWithUpper(this string? str)
        {
            if (string.IsNullOrWhiteSpace(str))
                return false;
    
            char ch = str[0];
            return char.IsUpper(ch);
        }
    }
    

    La libreria di classi, UtilityLibraries.StringLibrary, contiene un metodo denominato StartsWithUpper. Questo metodo restituisce un valore Boolean che indica se l'istanza della stringa corrente inizia con un carattere maiuscolo. Lo standard Unicode distingue i caratteri maiuscoli dai minuscoli. Il metodo Char.IsUpper(Char) restituisce true se un carattere è maiuscolo.

    StartsWithUpper viene implementato come metodo di estensione in modo da poterlo chiamare come se fosse membro della classe String.

  5. Salvare il file.

  6. Eseguire il comando seguente per compilare la soluzione e verificare che il progetto venga compilato senza errori.

    dotnet build
    

    L'output del terminale è simile all'esempio seguente:

    Microsoft (R) Build Engine version 17.8.0+b89cb5fde for .NET
    Copyright (C) Microsoft Corporation. All rights reserved.
      Determining projects to restore...
      All projects are up-to-date for restore.
      StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net8.0\StringLibrary.dll
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    Time Elapsed 00:00:02.78
    

Aggiungere un'app console alla soluzione

Aggiungere un'applicazione console che usa la libreria di classi. L'app chiederà all'utente di immettere una stringa e di segnalare se la stringa inizia con un carattere maiuscolo.

  1. Nel terminale eseguire il comando seguente per creare il progetto di app console:

    dotnet new console -o ShowCase
    

    L'output del terminale è simile all'esempio seguente:

    The template "Console Application" was created successfully.
    Processing post-creation actions...
    Running 'dotnet restore' on ShowCase\ShowCase.csproj...
      Determining projects to restore...
      Restored C:\Projects\ClassLibraryProjects\ShowCase\ShowCase.csproj (in 210 ms).
    Restore succeeded.
    
  2. Eseguire il comando seguente per aggiungere il progetto di app console alla soluzione:

    dotnet sln add ShowCase/ShowCase.csproj
    

    L'output del terminale è simile all'esempio seguente:

    Project `ShowCase\ShowCase.csproj` added to the solution.
    
  3. Aprire ShowCase/Program.cs e sostituire tutto il codice con il codice seguente.

    using UtilityLibraries;
    
    class Program
    {
        static void Main(string[] args)
        {
            int row = 0;
    
            do
            {
                if (row == 0 || row >= 25)
                    ResetConsole();
    
                string? input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) break;
                Console.WriteLine($"Input: {input}");
                Console.WriteLine("Begins with uppercase? " +
                     $"{(input.StartsWithUpper() ? "Yes" : "No")}");
                Console.WriteLine();
                row += 4;
            } while (true);
            return;
    
            // Declare a ResetConsole local method
            void ResetConsole()
            {
                if (row > 0)
                {
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                }
                Console.Clear();
                Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}");
                row = 3;
            }
        }
    }
    

    Il codice usa la variabile row per mantenere il conteggio del numero di righe di dati scritti nella finestra della console. Ogni volta che è maggiore o uguale a 25, il codice cancella la finestra della console e visualizza un messaggio all'utente.

    Il programma richiede all'utente di immettere una stringa. Indica se la stringa inizia con un carattere maiuscolo. Se l'utente preme il tasto INVIO senza immettere una stringa, l'applicazione termina e la finestra della console viene chiusa.

  4. Salva le modifiche.

Aggiungere un riferimento al progetto

Inizialmente, il nuovo progetto di app console non ha accesso alla libreria di classi. Per consentire di chiamare i metodi nella libreria di classi, creare un riferimento al progetto di libreria di classi.

  1. Esegui questo comando:

    dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj
    

    L'output del terminale è simile all'esempio seguente:

    Reference `..\StringLibrary\StringLibrary.csproj` added to the project.
    

Eseguire l'app

  1. Eseguire il comando seguente nel terminale:

    dotnet run --project ShowCase/ShowCase.csproj
    
  2. Provare il programma immettendo stringhe e premendo INVIO, quindi premere INVIO per uscire.

    L'output del terminale è simile all'esempio seguente:

    Press <Enter> only to exit; otherwise, enter a string and press <Enter>:
    
    A string that starts with an uppercase letter
    Input: A string that starts with an uppercase letter
    Begins with uppercase? : Yes
    
    a string that starts with a lowercase letter
    Input: a string that starts with a lowercase letter
    Begins with uppercase? : No
    

Risorse aggiuntive

Passaggi successivi

In questa esercitazione è stata creata una soluzione, è stato aggiunto un progetto di libreria e è stato aggiunto un progetto di app console che usa la libreria. Nell'esercitazione successiva si aggiunge un progetto di unit test alla soluzione.

In questa esercitazione viene creata una semplice libreria di utilità che contiene un singolo metodo di gestione delle stringhe.

La libreria di classi definisce tipi e metodi chiamati da un'applicazione. Se la libreria è destinata a .NET Standard 2.0, può essere chiamata da qualsiasi implementazione di .NET (incluso .NET Framework) che supporti .NET Standard 2.0. Se la libreria è destinata a .NET 7, può essere chiamata da qualsiasi applicazione destinata a .NET 7. Questa esercitazione illustra come usare .NET 7 come destinazione.

Quando si crea una libreria di classi, è possibile distribuirla come componente di terze parti o come componente in bundle con una o più applicazioni.

Prerequisiti

Creazione di una soluzione

Per iniziare, creare una soluzione vuota in cui inserire il progetto di libreria di classi. Una soluzione funge da contenitore per uno o più progetti. Si aggiungeranno altri progetti correlati alla stessa soluzione.

  1. Avviare Visual Studio Code.

  2. Selezionare File>Apri cartella (Apri... in macOS) dal menu principale

  3. Nella finestra di dialogo Apri cartella, creare una cartella ClassLibraryProjects e fare clic su Seleziona cartella (Apri in macOS).

  4. Aprire il terminale in Visual Studio Code selezionando Visualizza>terminale dal menu principale.

    Il terminale viene aperto con il prompt dei comandi nella cartella ClassLibraryProjects.

  5. Nel Terminale immettere il comando seguente:

    dotnet new sln
    

    L'output del terminale è simile all'esempio seguente:

    The template "Solution File" was created successfully.
    

Creare un progetto di libreria di classi

Aggiungere alla soluzione un nuovo progetto di libreria di classi .NET denominato "StringLibrary".

  1. Nel terminale eseguire il comando seguente per creare il progetto di libreria:

    dotnet new classlib -o StringLibrary
    

    Il comando -o o --output specifica il percorso in cui inserire l'output generato.

    L'output del terminale è simile all'esempio seguente:

    The template "Class library" was created successfully.
    Processing post-creation actions...
    Running 'dotnet restore' on StringLibrary\StringLibrary.csproj...
      Determining projects to restore...
      Restored C:\Projects\ClassLibraryProjects\StringLibrary\StringLibrary.csproj (in 328 ms).
    Restore succeeded.
    
  2. Eseguire il comando seguente per aggiungere il progetto di libreria alla soluzione:

    dotnet sln add StringLibrary/StringLibrary.csproj
    

    L'output del terminale è simile all'esempio seguente:

    Project `StringLibrary\StringLibrary.csproj` added to the solution.
    
  3. Verificare che la libreria sia destinata a .NET 7. In Esplora risorse, aprire StringLibrary/StringLibrary.csproj.

    L'elemento TargetFramework mostra che il progetto è destinato a .NET 7.0.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFramework>net7.0</TargetFramework>
      </PropertyGroup>
    
    </Project>
    
  4. Aprire Class1.cs e sostituire il codice con il codice seguente.

    namespace UtilityLibraries;
    
    public static class StringLibrary
    {
        public static bool StartsWithUpper(this string? str)
        {
            if (string.IsNullOrWhiteSpace(str))
                return false;
    
            char ch = str[0];
            return char.IsUpper(ch);
        }
    }
    

    La libreria di classi, UtilityLibraries.StringLibrary, contiene un metodo denominato StartsWithUpper. Questo metodo restituisce un valore Boolean che indica se l'istanza della stringa corrente inizia con un carattere maiuscolo. Lo standard Unicode distingue i caratteri maiuscoli dai minuscoli. Il metodo Char.IsUpper(Char) restituisce true se un carattere è maiuscolo.

    StartsWithUpper viene implementato come metodo di estensione in modo da poterlo chiamare come se fosse membro della classe String.

  5. Salvare il file.

  6. Eseguire il comando seguente per compilare la soluzione e verificare che il progetto venga compilato senza errori.

    dotnet build
    

    L'output del terminale è simile all'esempio seguente:

    Microsoft (R) Build Engine version 16.7.4+b89cb5fde for .NET
    Copyright (C) Microsoft Corporation. All rights reserved.
      Determining projects to restore...
      All projects are up-to-date for restore.
      StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net7.0\StringLibrary.dll
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    Time Elapsed 00:00:02.78
    

Aggiungere un'app console alla soluzione

Aggiungere un'applicazione console che usa la libreria di classi. L'app chiederà all'utente di immettere una stringa e di segnalare se la stringa inizia con un carattere maiuscolo.

  1. Nel terminale eseguire il comando seguente per creare il progetto di app console:

    dotnet new console -o ShowCase
    

    L'output del terminale è simile all'esempio seguente:

    The template "Console Application" was created successfully.
    Processing post-creation actions...
    Running 'dotnet restore' on ShowCase\ShowCase.csproj...
      Determining projects to restore...
      Restored C:\Projects\ClassLibraryProjects\ShowCase\ShowCase.csproj (in 210 ms).
    Restore succeeded.
    
  2. Eseguire il comando seguente per aggiungere il progetto di app console alla soluzione:

    dotnet sln add ShowCase/ShowCase.csproj
    

    L'output del terminale è simile all'esempio seguente:

    Project `ShowCase\ShowCase.csproj` added to the solution.
    
  3. Aprire ShowCase/Program.cs e sostituire tutto il codice con il codice seguente.

    using UtilityLibraries;
    
    class Program
    {
        static void Main(string[] args)
        {
            int row = 0;
    
            do
            {
                if (row == 0 || row >= 25)
                    ResetConsole();
    
                string? input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) break;
                Console.WriteLine($"Input: {input}");
                Console.WriteLine("Begins with uppercase? " +
                     $"{(input.StartsWithUpper() ? "Yes" : "No")}");
                Console.WriteLine();
                row += 4;
            } while (true);
            return;
    
            // Declare a ResetConsole local method
            void ResetConsole()
            {
                if (row > 0)
                {
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                }
                Console.Clear();
                Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}");
                row = 3;
            }
        }
    }
    

    Il codice usa la variabile row per mantenere il conteggio del numero di righe di dati scritti nella finestra della console. Ogni volta che è maggiore o uguale a 25, il codice cancella la finestra della console e visualizza un messaggio all'utente.

    Il programma richiede all'utente di immettere una stringa. Indica se la stringa inizia con un carattere maiuscolo. Se l'utente preme il tasto INVIO senza immettere una stringa, l'applicazione termina e la finestra della console viene chiusa.

  4. Salva le modifiche.

Aggiungere un riferimento al progetto

Inizialmente, il nuovo progetto di app console non ha accesso alla libreria di classi. Per consentire di chiamare i metodi nella libreria di classi, creare un riferimento al progetto di libreria di classi.

  1. Esegui questo comando:

    dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj
    

    L'output del terminale è simile all'esempio seguente:

    Reference `..\StringLibrary\StringLibrary.csproj` added to the project.
    

Eseguire l'app

  1. Eseguire il comando seguente nel terminale:

    dotnet run --project ShowCase/ShowCase.csproj
    
  2. Provare il programma immettendo stringhe e premendo INVIO, quindi premere INVIO per uscire.

    L'output del terminale è simile all'esempio seguente:

    Press <Enter> only to exit; otherwise, enter a string and press <Enter>:
    
    A string that starts with an uppercase letter
    Input: A string that starts with an uppercase letter
    Begins with uppercase? : Yes
    
    a string that starts with a lowercase letter
    Input: a string that starts with a lowercase letter
    Begins with uppercase? : No
    

Risorse aggiuntive

Passaggi successivi

In questa esercitazione è stata creata una soluzione, è stato aggiunto un progetto di libreria e è stato aggiunto un progetto di app console che usa la libreria. Nell'esercitazione successiva si aggiunge un progetto di unit test alla soluzione.

In questa esercitazione viene creata una semplice libreria di utilità che contiene un singolo metodo di gestione delle stringhe.

La libreria di classi definisce tipi e metodi chiamati da un'applicazione. Se la libreria è destinata a .NET Standard 2.0, può essere chiamata da qualsiasi implementazione di .NET (incluso .NET Framework) che supporti .NET Standard 2.0. Se la libreria è destinata a .NET 6, può essere chiamata da qualsiasi applicazione destinata a .NET 6. Questa esercitazione illustra come usare .NET 6 come destinazione.

Quando si crea una libreria di classi, è possibile distribuirla come componente di terze parti o come componente in bundle con una o più applicazioni.

Prerequisiti

Creazione di una soluzione

Per iniziare, creare una soluzione vuota in cui inserire il progetto di libreria di classi. Una soluzione funge da contenitore per uno o più progetti. Si aggiungeranno altri progetti correlati alla stessa soluzione.

  1. Avviare Visual Studio Code.

  2. Selezionare File>Apri cartella (Apri... in macOS) dal menu principale

  3. Nella finestra di dialogo Apri cartella, creare una cartella ClassLibraryProjects e fare clic su Seleziona cartella (Apri in macOS).

  4. Aprire il terminale in Visual Studio Code selezionando Visualizza>terminale dal menu principale.

    Il terminale viene aperto con il prompt dei comandi nella cartella ClassLibraryProjects.

  5. Nel Terminale immettere il comando seguente:

    dotnet new sln
    

    L'output del terminale è simile all'esempio seguente:

    The template "Solution File" was created successfully.
    

Creare un progetto di libreria di classi

Aggiungere alla soluzione un nuovo progetto di libreria di classi .NET denominato "StringLibrary".

  1. Nel terminale eseguire il comando seguente per creare il progetto di libreria:

    dotnet new classlib -f net6.0 -o StringLibrary
    

    Il comando -f o --framework modifica il framework di destinazione predefinito nella versione net6.0.

    Il comando -o o --output specifica il percorso in cui inserire l'output generato.

    L'output del terminale è simile all'esempio seguente:

    The template "Class library" was created successfully.
    Processing post-creation actions...
    Running 'dotnet restore' on StringLibrary\StringLibrary.csproj...
      Determining projects to restore...
      Restored C:\Projects\ClassLibraryProjects\StringLibrary\StringLibrary.csproj (in 328 ms).
    Restore succeeded.
    
  2. Eseguire il comando seguente per aggiungere il progetto di libreria alla soluzione:

    dotnet sln add StringLibrary/StringLibrary.csproj
    

    L'output del terminale è simile all'esempio seguente:

    Project `StringLibrary\StringLibrary.csproj` added to the solution.
    
  3. Verificare che la libreria sia destinata a .NET 6. In Esplora risorse, aprire StringLibrary/StringLibrary.csproj.

    L'elemento TargetFramework mostra che il progetto è destinato a .NET 6.0.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
      </PropertyGroup>
    
    </Project>
    
  4. Aprire Class1.cs e sostituire il codice con il codice seguente.

    namespace UtilityLibraries;
    
    public static class StringLibrary
    {
        public static bool StartsWithUpper(this string? str)
        {
            if (string.IsNullOrWhiteSpace(str))
                return false;
    
            char ch = str[0];
            return char.IsUpper(ch);
        }
    }
    

    La libreria di classi, UtilityLibraries.StringLibrary, contiene un metodo denominato StartsWithUpper. Questo metodo restituisce un valore Boolean che indica se l'istanza della stringa corrente inizia con un carattere maiuscolo. Lo standard Unicode distingue i caratteri maiuscoli dai minuscoli. Il metodo Char.IsUpper(Char) restituisce true se un carattere è maiuscolo.

    StartsWithUpper viene implementato come metodo di estensione in modo da poterlo chiamare come se fosse membro della classe String.

  5. Salvare il file.

  6. Eseguire il comando seguente per compilare la soluzione e verificare che il progetto venga compilato senza errori.

    dotnet build
    

    L'output del terminale è simile all'esempio seguente:

    Microsoft (R) Build Engine version 16.7.0+b89cb5fde for .NET
    Copyright (C) Microsoft Corporation. All rights reserved.
      Determining projects to restore...
      All projects are up-to-date for restore.
      StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net6.0\StringLibrary.dll
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    Time Elapsed 00:00:02.78
    

Aggiungere un'app console alla soluzione

Aggiungere un'applicazione console che usa la libreria di classi. L'app chiederà all'utente di immettere una stringa e di segnalare se la stringa inizia con un carattere maiuscolo.

  1. Nel terminale eseguire il comando seguente per creare il progetto di app console:

    dotnet new console -f net6.0 -o ShowCase
    

    L'output del terminale è simile all'esempio seguente:

    The template "Console Application" was created successfully.
    Processing post-creation actions...
    Running 'dotnet restore' on ShowCase\ShowCase.csproj...
      Determining projects to restore...
      Restored C:\Projects\ClassLibraryProjects\ShowCase\ShowCase.csproj (in 210 ms).
    Restore succeeded.
    
  2. Eseguire il comando seguente per aggiungere il progetto di app console alla soluzione:

    dotnet sln add ShowCase/ShowCase.csproj
    

    L'output del terminale è simile all'esempio seguente:

    Project `ShowCase\ShowCase.csproj` added to the solution.
    
  3. Aprire ShowCase/Program.cs e sostituire tutto il codice con il codice seguente.

    using UtilityLibraries;
    
    class Program
    {
        static void Main(string[] args)
        {
            int row = 0;
    
            do
            {
                if (row == 0 || row >= 25)
                    ResetConsole();
    
                string? input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) break;
                Console.WriteLine($"Input: {input}");
                Console.WriteLine("Begins with uppercase? " +
                     $"{(input.StartsWithUpper() ? "Yes" : "No")}");
                Console.WriteLine();
                row += 4;
            } while (true);
            return;
    
            // Declare a ResetConsole local method
            void ResetConsole()
            {
                if (row > 0)
                {
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                }
                Console.Clear();
                Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}");
                row = 3;
            }
        }
    }
    

    Il codice usa la variabile row per mantenere il conteggio del numero di righe di dati scritti nella finestra della console. Ogni volta che è maggiore o uguale a 25, il codice cancella la finestra della console e visualizza un messaggio all'utente.

    Il programma richiede all'utente di immettere una stringa. Indica se la stringa inizia con un carattere maiuscolo. Se l'utente preme il tasto INVIO senza immettere una stringa, l'applicazione termina e la finestra della console viene chiusa.

  4. Salva le modifiche.

Aggiungere un riferimento al progetto

Inizialmente, il nuovo progetto di app console non ha accesso alla libreria di classi. Per consentire di chiamare i metodi nella libreria di classi, creare un riferimento al progetto di libreria di classi.

  1. Esegui questo comando:

    dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj
    

    L'output del terminale è simile all'esempio seguente:

    Reference `..\StringLibrary\StringLibrary.csproj` added to the project.
    

Eseguire l'app

  1. Eseguire il comando seguente nel terminale:

    dotnet run --project ShowCase/ShowCase.csproj
    
  2. Provare il programma immettendo stringhe e premendo INVIO, quindi premere INVIO per uscire.

    L'output del terminale è simile all'esempio seguente:

    Press <Enter> only to exit; otherwise, enter a string and press <Enter>:
    
    A string that starts with an uppercase letter
    Input: A string that starts with an uppercase letter
    Begins with uppercase? : Yes
    
    a string that starts with a lowercase letter
    Input: a string that starts with a lowercase letter
    Begins with uppercase? : No
    

Risorse aggiuntive

Passaggi successivi

In questa esercitazione è stata creata una soluzione, è stato aggiunto un progetto di libreria e è stato aggiunto un progetto di app console che usa la libreria. Nell'esercitazione successiva si aggiunge un progetto di unit test alla soluzione.