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:
| Gruppe | Hauptbefehle | Verwendung |
|---|---|---|
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.
| Bereich | Verantwortung |
|---|---|
| Domain | BĂŒndelt EntitĂ€ten, Value Objects, enumerations, DomĂ€nenereignisse, Repository-VertrĂ€ge und Regeln, die zum GeschĂ€ft gehören. |
| Application | Orchestriert Use Cases, commands, queries, Validierungen, handlers sowie Eingabe- und AusgabevertrÀge der Anwendung. |
| Infrastructure | Isoliert externe Details wie Hilfsservices, Integrationen, Provider, Authentifizierung, Messaging und querschnittliche Funktionen. |
| Persistence | Zentralisiert Mappings, Datenbankkontext, migrations, konkrete Repositories und Unit of Work. |
| Api | Stellt endpoints, HTTP-VertrĂ€ge, Filter, Authentifizierung, Autorisierung und Eingabedokumentation fĂŒr externe Konsumenten bereit. |
| Orchestrierung | Bereitet die lokale AusfĂŒhrung der Komponenten, grundlegende Observability und die Integration zwischen Services wĂ€hrend der Entwicklung vor. |
| Tests | Organisiert 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.
