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