====== .NET ======
[[https://dotnet.microsoft.com/]]
===== Nice to Know =====
==== Sprachen ====
* C# (C sharp) - //objektorientiert//
* F# (F sharp) - //funktional//
* Visual Basic (VB.NET)
==== Telemetrie ====
* [[https://docs.microsoft.com/dotnet/core/tools/telemetry]]
* Telemetrie lässt sich mit der Umgebungsvariable ''%%DOTNET_CLI_TELEMETRY_OPTOUT="true"%%'' abschalten
* PowerShell: [System.Environment]::SetEnvironmentVariable("DOTNET_CLI_TELEMETRY_OPTOUT", "true", [System.EnvironmentVariableTarget]::User)
==== Auswählen der .NET Version zum Ausführen von Programmen ====
* [[https://docs.microsoft.com/dotnet/core/versions/selection#precedence]]
* man kann mit der Umgebungsvariable ''%%DOTNET_ROLL_FORWARD%%'' konfigurieren, welche .NET Version zum Ausführen genutzt wird
* **Major** ist ein guter Kompromiss zwischen **Minor** (default) und **LatestMajor**
* Beispiel: Man hat nur .NET 6 installiert und möchte eine .NET 5 App ausführen
* PowerShell:
$value = "Major"
[System.Environment]::SetEnvironmentVariable("DOTNET_ROLL_FORWARD", $value, [System.EnvironmentVariableTarget]::User)
===== Unterschiede =====
==== .NET Framework ====
* alte .NET Implementierung
* windows-only, closed-source
* erste Version: 1.0 (2002)
* letzte Version: 4.8 (2019)
==== .NET Core ====
* neue .NET Implementierung
* cross-platform, open-source
* erste Version: 1.0 (2016)
* letzte Version: 3.1 (2019)
==== .NET ====
* Nachfolger von .NET Core (ersetzt auch das alte .NET Framework)
* cross-platform, open-source
* erste Version: 5 (2020)
* erste LTS Version: 6 (2021)
===== Vorraussetzungen =====
[[https://docs.microsoft.com/dotnet/core/tutorials/]]
* IDE
* [[https://visualstudio.microsoft.com/|Visual Studio]] (Windows/macOS)
* [[https://code.visualstudio.com/|Visual Studio Code]] (cross-platform)
* [[visual_studio_code|siehe im Wiki]]
* [[https://jetbrains.com/rider/|JetBrains Rider]] (cross-platform)
* .NET SDK (Core/Framework): [[https://dotnet.microsoft.com/]]
===== Projekte im SDK-Style =====
Beispiel C# Web-Projekt (ASP.NET Core)
net6.0
enable
enable
latest
all
true
true
all
runtime; build; native; contentfiles; analyzers; buildtransitive
===== Einrichten der Entwicklungsumgebung (Ubuntu) =====
==== .NET installieren ====
* [[https://docs.microsoft.com/dotnet/core/install/linux-ubuntu#2204]]
> wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
> sudo dpkg -i packages-microsoft-prod.deb
> rm packages-microsoft-prod.deb
=== SDK installieren ==
Runtime ist bereits im SDK vorhanden
> sudo apt-get update && sudo apt-get install -y dotnet-sdk-6.0
=== Runtime installieren ==
> sudo apt-get update && sudo apt-get install -y aspnetcore-runtime-6.0
==== Erstes Projekt mit Visual Studio Code ====
* [[visual_studio_code|siehe Visual Studio Code im Wiki]]
* [[https://docs.microsoft.com/dotnet/core/tutorials/with-visual-studio-code]]
* [[https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp|C# Erweiterung]]
$ mkdir ~/projects/my-project
$ cd ~/projects/my-project
$ dotnet new sln # a dotnet solution can contain multiple projects
$ dotnet new console --name my-console-app
$ dotnet sln my-project.sln add my-console-app/my-console-app.csproj
$ cd my-console-app
$ dotnet restore # restore nuget packages
$ dotnet build
$ dotnet run
$ cd ..
$ code . # open entire solution in vs code and start developing
Für **Publish** siehe [[https://docs.microsoft.com/dotnet/core/tutorials/publishing-with-visual-studio-code]]
Im [[https://docs.microsoft.com/dotnet/core/rid-catalog|RID-Katalog]] findet man die **RuntimeIdentifier**, um .NET Applikationen für eine bestimmte Plattform zu kompilieren.