Erste Schritte mit Lino

Lino ist ein Befehlszeilentool zum Erstellen, Weiterentwickeln und Standardisieren professioneller .NET-Anwendungen mit klar definierter Architektur. Es automatisiert wiederkehrende scaffolding-Aufgaben, geht aber ĂŒber das bloße Generieren von Dateien hinaus: Lino fĂŒhrt Entwickler durch eine konsistente technische Struktur mit Trennung von Verantwortlichkeiten, expliziten Schichten, DomĂ€nenmodellierung, Use Cases, APIs, Integrationen, Ereignissen, Persistenz, Webanwendungen und querschnittlichen Funktionen. Ziel ist es, den Start und die Weiterentwicklung realer Systeme zu beschleunigen, ohne auf QualitĂ€t, Nachverfolgbarkeit und architektonische Klarheit zu verzichten.

Voraussetzungen

PrĂŒfen Sie vor der Installation von Lino, ob Ihre Umgebung richtig vorbereitet ist:

  • ✅ .NET 10.0 SDK oder höher installiert. .NET herunterladen
  • ✅ .NET CLI im Terminal verfĂŒgbar. PrĂŒfen mit: dotnet --version
  • ✅ Git fĂŒr Versionskontrolle installiert. Git herunterladen
  • ✅ Entity Framework Core CLI fĂŒr migrations-UnterstĂŒtzung installiert: dotnet tool install --global dotnet-ef
  • ✅ OCI-kompatible Containerumgebung wie Docker Desktop oder Podman.

PlattformkompatibilitÀt

Lino ist plattformĂŒbergreifend und kann auf den wichtigsten Betriebssystemen verwendet werden:

  • ✅ Windows
  • ✅ macOS
  • ✅ Linux

Installation

Lino wird als globales .NET-Tool verteilt. Stellen Sie vor dem Fortfahren sicher, dass das .NET 10 SDK oder höher installiert ist.

Installieren Sie die neueste Version mit:

dotnet tool install --global Tolitech.Lino

ÜberprĂŒfen Sie nach der Installation die Funktion von Lino mit:

lino --version

Wenn die Installation erfolgreich war, wird die installierte Version im Terminal angezeigt.

Authentifizierung

Nach der Installation von Lino mĂŒssen Sie sich authentifizieren, um auf alle Funktionen zugreifen zu können.

Wenn Sie bereits ein Konto haben, melden Sie sich mit folgendem Befehl an:

lino auth login

Sie werden aufgefordert, Folgendes anzugeben:

  • Benutzer: Zuvor registrierte E-Mail-Adresse.
  • Passwort: Dem Konto zugeordnetes Passwort.

Falls Sie noch kein Konto haben, registrieren Sie sich direkt ĂŒber die CLI mit:

lino user register

Geben Sie wÀhrend der Registrierung Folgendes an:

  • Vorname: Vorname des Benutzers.
  • Nachname: Nachname des Benutzers.
  • E-Mail: E-Mail-Adresse, die auch als Login verwendet wird.
  • Passwort: Sicheres Passwort mit mindestens 6 Zeichen.
  • PasswortbestĂ€tigung: Geben Sie das Passwort zur Validierung erneut ein.

Nach Abschluss der Registrierung wird der Benutzer automatisch authentifiziert.

Spracheinstellungen

StandardmĂ€ĂŸig wird die Lino CLI auf Englisch en angezeigt, Sie können die Sprache jedoch nach Ihren WĂŒnschen aus den verfĂŒgbaren Optionen Ă€ndern:

en | pt | es | de | fr | it | ja | ko | ru | zh

Um eine neue Sprache festzulegen, fĂŒhren Sie den folgenden Befehl aus:

lino preferences culture set --name <culture>

Ersetzen Sie <culture> durch eine der unterstĂŒtzten Kulturen. Verwenden Sie zum Beispiel pt fĂŒr Portugiesisch, en fĂŒr Englisch oder es fĂŒr Spanisch.

Alternativ können Sie die Sprache ĂŒber eine interaktive Liste auswĂ€hlen mit:

lino preferences culture set

UTF-8-Codierung anpassen (optional)

FĂŒr die korrekte Anzeige von Sprachen mit Sonderzeichen (wie Japanisch, Koreanisch, Russisch oder Chinesisch) stellen Sie sicher, dass Ihr Terminal fĂŒr UTF-8-Codierung konfiguriert ist.

Passen Sie in Windows PowerShell die Codierung mit den folgenden Befehlen an:

[console]::InputEncoding = [System.Text.Encoding]::UTF8
[console]::OutputEncoding = [System.Text.Encoding]::UTF8

Hinweis: Unter Linux, macOS und Windows Terminal ist UTF-8-UnterstĂŒtzung normalerweise nativ vorhanden. Trotzdem wird empfohlen, die Konfiguration zu prĂŒfen, falls Probleme bei der Zeichenanzeige auftreten.

VerfĂŒgbare Befehle

Lino organisiert seine Automatisierung in Befehlsgruppen. Jede Gruppe steht fĂŒr eine architektonische Absicht: die Lösung erstellen, Services hinzufĂŒgen, die DomĂ€ne modellieren, APIs bereitstellen, Seiten generieren, Integrationen konfigurieren, migrations steuern, Artefakte versionieren und builds vorbereiten.

Die zuverlĂ€ssigste Referenz fĂŒr Ihren Rechner ist die Hilfe der installierten CLI selbst. Verwenden Sie lino --help, um den vollstĂ€ndigen Befehlsbaum anzuzeigen, und verwenden Sie --help in jeder Gruppe, um Optionen, aliases, Pflichtparameter und Beispiele nachzuschlagen.

Da Lino kontinuierlich weiterentwickelt wird, können zwischen Versionen neue Befehle und Optionen erscheinen. Betrachten Sie diese Dokumentation als Orientierung fĂŒr die Nutzung und bestĂ€tigen Sie die genaue Syntax im Terminal, wenn Sie einen Ablauf automatisieren oder jemanden im Team schulen.

Um die Liste der verfĂŒgbaren Befehle anzuzeigen, fĂŒhren Sie den Root-Befehl aus oder fragen Sie die Hilfe explizit ab:

lino
lino --help
lino --help
lino project --help
lino database migrations --help
lino integration operation --help

Um Unterbefehle und Optionen einer beliebigen Gruppe anzuzeigen, verwenden Sie den Befehlsnamen allein oder kombinieren Sie ihn mit --help:

lino <command>
lino <command> --help

Zum Beispiel zeigt die CLI beim Abfragen der Gruppe project die Gruppenbeschreibung, hĂ€ufige Beispiele und die verfĂŒgbaren Unterbefehle an:

lino project --help
BESCHREIBUNG:
    Verwaltet Lino-Projekte.

BEISPIELE:
    lino project new --name MyProject
    lino project list

BEFEHLE:
    new     Erstellt ein neues Projekt.
    list    Listet erstellte Projekte auf.
    delete  Entfernt ein vorhandenes Projekt.

In Beispielen kennzeichnen Werte zwischen <...> Argumente, die durch den echten Wert Ihres Projekts ersetzt werden mĂŒssen. Zum Beispiel muss <ProjectName> durch den Namen der Lösung, <ServiceName> durch den Namen des Services und <culture> durch eine unterstĂŒtzte Kultur wie pt oder en ersetzt werden.

Wichtigste Befehlsgruppen:

GruppeHauptbefehleVerwendung
project new, list, delete Erstellt, listet und entfernt Lino-Projekte.
service new, list, delete FĂŒgt Backend-Services hinzu, listet sie auf und entfernt sie.
module new, list, delete FĂŒgt Module innerhalb modularer Services hinzu, listet sie auf und entfernt sie.
entity new, edit, list, delete Erstellt, bearbeitet, listet und entfernt DomÀnenentitÀten.
shadow-entity (shadow) new Erstellt kontrollierte lokale Kopien von Daten aus einem anderen Modul oder Service.
enumeration (enum) new, edit, list, delete Erstellt, bearbeitet, listet und entfernt DomÀnen-Enumerationen.
value-object (vo) new, edit, list, delete Erstellt, bearbeitet, listet und entfernt Value Objects.
property (prop) delete Entfernt Eigenschaften aus DomÀnenentitÀten.
command new, list Generiert schreibende Use Cases, normalerweise verbunden mit ZustandsÀnderungen, Transaktionsregeln und Validierungen der Absicht.
query new, list Generiert lesende Use Cases, normalerweise fokussiert auf Abfragen, Projektionen und die RĂŒckgabe von Daten ohne ZustandsĂ€nderung.
api new, list Generiert und listet API-Endpunkte fĂŒr Use Cases.
web-app (webapp) new FĂŒgt Webanwendungen hinzu.
page new, edit, list Generiert, bearbeitet und listet Blazor-Seiten.
event new, edit, list Erstellt und pflegt DomÀnen- oder Integrationsereignisse.
event-handler (handler) new, list Erstellt und listet Event-Handler.
error-definition (error) new, list Erstellt standardisierte Fehlerdefinitionen.
integration new, list, resource (new/list), operation (new/list), consume Modelliert Integrationen, resources, Operationen und Konsumenten.
feature background-job add, auth add, tenant add FĂŒgt querschnittliche Funktionen hinzu, darunter Hintergrundjobs, Authentifizierung und MandantenfĂ€higkeit.
database migrations add, remove, list, apply, revert Verwaltet Entity Framework Core-Migrationen.
secret list, set, remove, clear Verwaltet lokale Projekt-Secrets.
plan add Registriert einen KI-unterstĂŒtzten AusfĂŒhrungsplan.
version show, list, bump Zeigt Versionen von Services und Web-Apps an und erhöht sie.
build - Generiert Artefakte und Container-Images.
user register Registriert einen Benutzer fĂŒr den Zugriff auf authentifizierte Lino-Funktionen.
auth login, logout Verwaltet die lokale CLI-Sitzung, einschließlich Authentifizierung und Abmeldung.
preferences culture set Konfiguriert lokale CLI-Einstellungen, zum Beispiel die in interaktiven Befehlen angezeigte Sprache.

Einige Befehle zeigen der Einfachheit halber einen kurzen alias in Klammern an. Die ursprĂŒnglichen Namen bleiben die wichtigste Referenz fĂŒr Lesen, Dokumentation, Schulung, Automatisierung und Support.

Schnellstart

Erstellen Sie mit folgendem Befehl schnell eine moderne, skalierbare .NET-Anwendung, die auf kontinuierliche Weiterentwicklung vorbereitet ist:

lino project new --name <ProjectName>

Ersetzen Sie <ProjectName> durch den echten Namen Ihrer Lösung. Um beispielsweise ein Projekt mit dem Namen MyApp zu erstellen, fĂŒhren Sie lino project new --name MyApp aus.

Dieser Befehl generiert eine strukturierte .NET solution mit klarer Trennung zwischen DomÀne, Anwendung, Infrastruktur, Persistenz, API, Orchestrierung und Tests. Die Anfangsstruktur hilft, architektonische Entscheidungen ab dem ersten commit sichtbar zu halten, und verhindert, dass GeschÀftsregeln, Datenzugriff, endpoints und operative Details an derselben Stelle vermischt werden.

Visuell lÀsst sich eine Anfangslösung namens MyApp so verstehen:

MyApp/
├── MyApp.slnx
├── src/
│   ├── Aspire/
│   │   ├── AppHost/
│   │   │   └── MyApp.AppHost.csproj
│   │   └── ServiceDefaults/
│   │       └── MyApp.ServiceDefaults.csproj
│   └── Services/
│       └── Shared/
│           ├── Api/
│           │   └── MyApp.Shared.Api.csproj
│           ├── Application/
│           │   └── MyApp.Shared.Application.csproj
│           ├── Domain/
│           │   └── MyApp.Shared.Domain.csproj
│           ├── Infrastructure/
│           │   └── MyApp.Shared.Infrastructure.csproj
│           └── Infrastructure.Persistence/
│               └── MyApp.Shared.Infrastructure.Persistence.csproj
└── tests/

Dieser Baum ist ein didaktisches Beispiel fĂŒr die Struktur, die fĂŒr das Projekt des Benutzers generiert wird. Er zeigt, wie die Lösung lokale AusfĂŒhrung, Services, technische Schichten und Tests von Anfang an trennt.

Was das Anfangsprojekt liefert

Die von Lino erstellte Anfangslösung ist bereits nach technischen Verantwortlichkeiten organisiert. Statt nur ein leeres Projekt zu liefern, bereitet die CLI eine Basis mit Schichten und Komponenten vor, die fĂŒr Unternehmensanwendungen geeignet sind.

BereichVerantwortung
DomainBĂŒndelt EntitĂ€ten, Value Objects, enumerations, DomĂ€nenereignisse, Repository-VertrĂ€ge und Regeln, die zum GeschĂ€ft gehören.
ApplicationOrchestriert Use Cases, commands, queries, Validierungen, handlers sowie Eingabe- und AusgabevertrÀge der Anwendung.
InfrastructureIsoliert externe Details wie Hilfsservices, Integrationen, Provider, Authentifizierung, Messaging und querschnittliche Funktionen.
PersistenceZentralisiert Mappings, Datenbankkontext, migrations, konkrete Repositories und Unit of Work.
ApiStellt endpoints, HTTP-VertrĂ€ge, Filter, Authentifizierung, Autorisierung und Eingabedokumentation fĂŒr externe Konsumenten bereit.
OrchestrierungBereitet die lokale AusfĂŒhrung der Komponenten, grundlegende Observability und die Integration zwischen Services wĂ€hrend der Entwicklung vor.
TestsOrganisiert Tests nach Verantwortung, sodass DomÀne, Anwendung, APIs und Integrationen schrittweise validiert werden können.

Der in <ProjectName> angegebene Name wird Teil der technischen IdentitÀt der Lösung. WÀhlen Sie einen kurzen, stabilen und aussagekrÀftigen Namen, da er in namespaces, assemblies, Artefakten, Konfigurationen und Referenzen zwischen Komponenten verwendet wird.

Wichtigste Vorteile:

  • Explizite Architektur: Trennung zwischen GeschĂ€ftsregeln, Use Cases, Infrastruktur, Persistenz und EingabevertrĂ€gen.
  • Modulare Weiterentwicklung: Basis vorbereitet fĂŒr traditionelle Services, modulare Monolithen, Microservices und SaaS-Anwendungen, wenn der Kontext es erfordert.
  • Konsistente technische Muster: UnterstĂŒtzung fĂŒr DDD, Clean Architecture, CQRS, Ereignisse, Integrationen, migrations, Tests und Observability.
  • Weniger mechanische Arbeit: Generierung wiederkehrender Strukturen, damit Entwickler ihre Energie auf DomĂ€ne, Regeln, VertrĂ€ge und Produktentscheidungen konzentrieren können.
  • Vorhersehbarerer Code: Namenskonventionen, Ordnerorganisation und Verantwortlichkeiten reduzieren Mehrdeutigkeit zwischen Teammitgliedern.

Mit Lino beginnt der Entwickler nicht mit einem leeren Ordner oder einem generischen template. Er beginnt mit einer meinungsstarken Basis fĂŒr Unternehmenssysteme, in der jedes generierte Artefakt eine klare technische Funktion hat und inkrementell weiterentwickelt werden kann.

Ein unbehandelter Fehler ist aufgetreten. Aktualisieren 🗙