C# Intro

Setup

For at kunne arbejde med C# kildekoden har vi brug for en god editor. Envidere får er der brug for en kompiler, så vi kan oversætte kildeteksten til et program der kan eksekveres på maskinen.

Code editor

Der er flere muligheder at vælge mellem når man skal arbejde med C# kode. For ikke at bruge en masse tid på at lære et nyt miljø at kende, vælger vi at bruge Visual Studio Code, da den kan bruges både på Windows og Mac, og det er den samme editor vi har brugt til at arbjede med javascript.

Efter du har installeret Visual Studio Code vil det være en fordel at installere en udvidelse, der gør det nemmere at arbejde med C# filer, kopilering, og debugging af disse.

For at installere udvidelsen vælges plugin i menuen, og søg efter C#, på listen skulle du gerne kunne finde dette C# plugin fra microsoft.

Compiler

C# adskiller sig fra javascript bl.a. ved, at det er nødvendigt at oversætte kildeteksten til et eksekverbart program, inden det kan afvikles på computeren. Derfor har vi brug for en kompiler.

Derfor skal vi hente og installere .NET Core.

Efter installationen er færdig kan du åbne en terminal f.eks. Powershell og verificere din version af .NET Core med kommandoen dotnet --version. På min maskine giver den dette output.

$ dotnet --version
5.0.401

Hvilket vil sige at jeg har version 5.0.401 installeret.

Opret projekt

Den nemmeste måde at starte et nyt .NET Core projekt er vha. terminalen. Start med at åbne en terminal i den mappe du ønsker at arbejde i.

For at oprette et nyt projekt skal du åbne en terminal og køre kommandoen.

dotnet new console -o my-console-app

Dette laver en ny console app med navnet my-console-app, og opretter det en undermappe med samme navn.

Afvikling fra kommando linjen

For at sikre at det virker efter hensigten, starter vi med at oversætte og køre programmet fra kommando linjen.

Skift til det netop oprettede projekt med kommandoen:

cd my-console-app

Du står nu i mappen med projektet, og kan nu oversætte (compile) og køre (run) det med kommandoen dotnet run. På min maskine giver det dette output.

my-console-app $ dotnet run
Hello World!

Hvis du kan få et lignede resultat er det lykkedes at kompilere og oversætte programmet.

Arbejd med C# i VS code

Nu er det vist tid til at rette lidt i koden, åben derfor mappen med projektet i VS code.

Åben filen Program.cs i projektet. Indholdet burde se således ud:

using System;

namespace hmm_demo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Prøv nu at rette den fremhævede linje, så den skriver Hej Programmering! i stedet for Hello World!. Husk at gemme filen.

C# extension

For at gøre det nemmere at arbejde med C# i VS Code skal vi have installeret en program udvidelse. Søg efter c# i extensions i VS code og tryk på install.

Screenshot af VS code hvor der er søgt efter C# udvidelsen.

Kompilering / Debug

Med den nye extension er det muligt at oversætte, køre og fejlsøge i C# programmer vha. knapper i VS Code.

For at køre programmet skal du vælge run -> debug i menuen, eller trykke på f5.

Måske kommer der en boks frem der beder dig vælge det udviklingsmiljø du vil bruge. Her skal du vælge .NET Core. Dette genererer instillinger i mappen .vscode, som bruges af C# udvidelsen når koden skal oversættes og køres.

Når programmet kører får jeg på min maskine dette output:

-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.10\System.Private.CoreLib.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Loaded 'C:\code\c-sharp\2021\my-console-app\bin\Debug\net5.0\my-console-app.dll'. Symbols loaded.
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.10\System.Runtime.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.10\System.Console.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.10\System.Threading.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.10\System.Text.Encoding.Extensions.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Hello World!
The program '[14664] my-console-app.dll' has exited with code 0 (0x0).

Det meste er beskeder fra compiler og runtime miljøet, men der kommer også det forventede output fra koden jeg selv har skrevet, på den fremhævede linje.

Håndtering af stdin / stdout

Afhængig af typen af det program du laver, kan det være hensigtsmæssigt at ændre måden det eksekveres i fra VS Code på.

Der er 3 muligheder, som vælges ved at ændre i instillingerne i .vscode/launch.json. Prøv at ændre i parameteren console til en af disse værdier, og vælg den der passer bedst til dit brugsscenarie.

  • "console": "internalConsole"
  • "console": "integratedTerminal"
  • "console": "externalTerminal"

Hvis jeg vælger indstillingen externalTerminal, vises output fra mit program fra tidligere på denne måde på min windows 10 maskine.

Screenshot af terminal output.

Gitignore

Når .NET Core projektet bygges, bliver der genereret en række objektfiler og binære biblioteker osv. af kompileren. Disse er nødvendige for at programmet kan afvikles, men hvis de andre der arbejder selv har en kompiler installeret, kan disse nemt gendannes. Derfor kan det være nyttigt at undlade at tilføje genererede filer til versionsstyringssystemet.

Hvis man f.eks. benytter git kan man lave en liste af filer og mapper der skal ignoreres af git. Dette kan klares ved at oprette en fil med navnet .gitignore, i roden af projektet.

# files and folders to be ignored by git

# ignore build artifacts
bin/
obj/

Med dette indhold bliver indholdet af mapperne bin og obj ignoreret af git.

Man kan nemt justere i hvilke filer og mapper der skal ignoreres ved at ændre i .gitignore filen. Se også dokumentationen af gitignore.

Materiale