C#-Projekte mit dem .NET CLI-Tool erstellen und ausführen
Wir wechseln zurück in das Verzeichnis C:\csdemo, das das übergeordnete Verzeichnis des HelloWorld-Ordners aus der vorherigen Lektion ist.
Erstelle ein neues Verzeichnis mit mkdir HelloWorld2. Alternativ kannst du auch per Rechtsklick manuell einen neuen Ordner anlegen oder
Wechsle anschließend über die Befehlszeile mit cd HelloWorld2 in diesen Ordner
Führe den folgenden Befehl aus, um eine brandneue Konsolenanwendung zu erstellen. console ist der integrierte Vorlagenname des .NET CLI zum Generieren von Programmen:
dotnet new consoleCode-Sprache: JavaScript (javascript)
C:\csdemo>mkdir HelloWorld
C:\csdemo>cd HelloWorld
C:\csdemo\HelloWorld>cd ..
C:\csdemo>mkdir HelloWorld2
C:\csdemo>cd HelloWorld2
C:\csdemo\HelloWorld2>dotnet new console
Die Vorlage „Konsolen-App“ wurde erfolgreich erstellt.
Nachbereitungen werden ausgeführt...
Wiederherstellung von C:\csdemo\HelloWorld2\HelloWorld2.csproj:
Wiederherstellung abgeschlossen.Code-Sprache: JavaScript (javascript)
Hinweis: Das .NET CLI bietet zahlreiche Projektvorlagen, mit denen sich verschiedene Anwendungstypen erstellen lassen – darunter ASP.NET-Webseiten, grafische Desktopprogramme mit Windows Forms und vieles mehr.
Nachdem das Projekt erstellt wurde, öffne den Projektordner, um den Inhalt einzusehen

Im Terminal kannst du zudem den Befehl dir ausführen, um alle Dateien im Ordner aufzulisten
Du siehst, dass im Verzeichnis drei neue Dateien und ein neuer Ordner entstanden sind
- Projektdatei:
HelloWorld2.csproj - C#-Quellcodedatei:
Program.cs - Ordner:
obj(speichert Kompiliereinstellungen, Cache-Daten und weitere für die .NET-Kompilierung und Ausführung benötigte Informationen)
Öffne HelloWorld2.csproj mit dem Notepad
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Code-Sprache: HTML, XML (xml)

Auf meinem PC ist .NET 10 installiert, daher werden neu erstellte Projekte standardmäßig auf net10.0 ausgerichtet
Öffne Program.cs, dort befindet sich der vordefinierte Standardcode
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");Code-Sprache: JavaScript (javascript)
Kompiliere und starte das Programm, indem du diesen Befehl ausführst
dotnet run

Bei erfolgreicher Ausführung gibt die Konsole folgenden Text aus: Hello World!
Leser mit Programmiergrundlagen stellen sich oft eine Frage: Man lernt, dass der Einstiegspunkt eines Programms die Main-Funktion ist – warum ist diese hier nicht zu sehen?
Dabei handelt es sich um eine moderne .NET-Funktion namens Top-Level-Anweisungen (keine explizite Main nötig), ein syntaktischer Zucker neuerer C#-Versionen. Bei minimalem Code generiert der Compiler automatisch einen verborgenen Main-Einstiegspunkt und erspart dir wiederkehrenden Boilerplate-Code
Die vollständige Schreibweise des obigen Codes lautet wie folgt:
using System;
namespace HelloWorld2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}Code-Sprache: JavaScript (javascript)

Führe den Befehl dotnet run erneut aus

Der Code kompiliert und läuft ohne Probleme.
<Project Sdk="Microsoft.NET.Sdk">: Gibt an, dass das Projekt das neue SDK-basierte Projektformat von .NET verwendet
<OutputType>Exe</OutputType>: Legt fest, dass die Kompilierung ein ausführbares Programm erzeugt (obligatorische Einstellung für Konsolenapps)
<TargetFramework>net10.0</TargetFramework>: Gibt an, dass das Projekt auf dem .NET Framework 10.0 ausgeführt wird
// Importiert den systemeigenen Namespace System, darin befindet sich die Console-Klasse
using System;
// Definiert den projektspezifischen Namespace HelloWorld2, um Klassen verschiedener Projekte voneinander abzugrenzen und Namenskonflikte zu vermeiden
namespace HelloWorld2
{
// Hauptklasse des Programms, in .NET-Konsolenvorlagen standardmäßig Program genannt
class Program
{
/// <summary>
/// Einzige Einstiegsmethode jedes C#-Programms, wird automatisch beim Start der Anwendung ausgeführt
/// static: Statische Methode, aufrufbar ohne Instanziierung der Program-Klasse
/// void: Kein Rückgabewert; das Programm übergibt nach Beendigung keine Daten an das Betriebssystem
/// string[] args: Zeichenfolgenarray, das Befehlszeilenparameter aufnimmt, die beim Start des Programms übergeben werden
/// </summary>
static void Main(string[] args)
{
// Console.WriteLine() : Methode zur Textausgabe in der Konsole
// WriteLine fügt nach der Ausgabe automatisch einen Zeilenumbruch ein
// "Hello World!" ist der Text, der im Terminalfenster angezeigt wird
Console.WriteLine("Hello World!");
}
}
}Code-Sprache: JavaScript (javascript)

Die allererste Code-Zeile bindet den Namespace System ein. Dadurch kannst du alle darin enthaltenen Klassen direkt im Code nutzen, ohne das Präfix System schreiben zu müssen. Lässt du diese Einbindung weg, musst du immer den vollständigen Klassennamen angeben.
Bei dem Aufruf Console.WriteLine steht Console für den Klassennamen und WriteLine für den Methodennamen – siehe den oberen rechten Bereich im obigen Screenshot.