Das ist neu in Rider

Rider 2021.3 bietet offizielle Unterstützung für das .NET 6 SDK, einschließlich der Hot-Reload-Funktion. Außerdem wurden die Hauptsymbolleiste und der Debug-Tab neu gestaltet und das neue Toolfenster Problems View eingeführt. Rider unterstützt jetzt weitere C# 10-Features wie dateibezogene Namensräume und globale using-Direktiven, damit Sie die neuesten Sprachmerkmale effektiver nutzen können.

Zu den weiteren Neuerungen zählen Updates für die Unity- und F#-Unterstützung, Formatierung und Bereinigung beim Speichern, XAML-Vorschau für die SDKs .NET 6, .NET 5 und .NET Core 3.x sowie Unterstützung für Apple-Silicon-Chips.

Unterstützung für .NET 6 SDK

Rider 2021.3 bietet offizielle Unterstützung für das .NET 6 SDK, einschließlich:

  • Projektvorlagen.
  • Die neuesten Zielframeworks.
  • Die neueste NuGet-API.
  • Hot Reload.
  • Debugging für Blazor WebAssembly.
  • Erstellen/Ausführen/Debuggen von Projekten, die das neue SDK nutzen.
  • ASP.NET-Scaffolding für .NET-6-Projekte.

Rider bietet auch eine erste Unterstützung für Xamarin-iOS- und Xamarin-Android-Projekte, die auf dem .NET 6 SDK basieren.

Hot Reload

Rider unterstützt die Hot-Reload-Funktion von .NET 6! Wenn Sie Änderungen am verwalteten Quellcode vornehmen, während Ihre App ausgeführt wird, werden Sie von Rider gefragt, ob Sie diese Änderungen ohne Neustart auf die ausgeführte App anwenden möchten. Achten Sie oben im Texteditor auf die gelbe Benachrichtigungsleiste Sources are modified. Wenn Sie die Änderung übernehmen, wird Ihre App sofort aktualisiert und Sie können mit der aktualisierten App weiterarbeiten.

Hot Reload wird bei Verwendung der Run-Konfigurationen .NET Project und .NET Launch Settings Profile automatisch aktiviert.

Sie können die Hot-Reload-Funktion auf der neuen Einstellungsseite Preferences/Settings | Build, Execution, Deployment | Hot Reload aktivieren und deaktivieren.

Einschränkungen:

  • Das Debuggen während einer Hot-Reload-Sitzung ist nur unter Windows verfügbar, wo Sie Hot Reload zusammen mit dem Debugger verwenden und Änderungen beim schrittweisen Ausführen automatisch anwenden können. Hot Reload funktioniert auf allen Plattformen, wenn kein Debugging stattfindet.
  • Hot Reload unterstützt keine F#- und VB.NET-Anwendungen. Außerdem unterstützt Hot Reload keine Änderungen an UI-Formaten in Frameworks wie WPF, Windows Forms und .NET MAUI. Blazor WebAssembly (WASM) wird ebenfalls noch nicht unterstützt.
  • Um die Änderungen zu sehen, die Sie an Razor Pages vorgenommen haben, müssen Sie die Seite im Browser neu laden. Das automatische Neuladen von Seiten wird in einer zukünftigen Version hinzugefügt.

Weitere Informationen: Hot Reload für .NET 6 in Rider 2021.3

UI/UX

Überarbeitete Hauptsymbolleiste

Die alte Hauptsymbolleiste litt unter einigen Problemen, die wir gern beseitigen wollten. Es gab zu viele Symbole, und die meisten wurden zudem kaum verwendet. Die VCS- und Navigationsfunktionalität war nicht zu sehen. Und vor allem war es nicht möglich, mehrere Run-Konfigurationen zu verwenden.

In Rider 2021.3 haben wir die Hauptsymbolleiste vollkommen neu gestaltet. Mit dem neuen Design wollten wir Ihnen eine übersichtliche und dennoch funktionale Symbolleiste bieten. Die Neuerungen umfassen folgende Elemente:

  • Zurück- und Vor-Schaltflächen – die Basis für die Kontextnavigation in Rider.
  • Ein VCS-Widget für den Zugriff auf alle VCS-bezogenen Funktionen. Dieses Widget befindet sich nun näher am Commit-Toolfenster.
  • Ein großes Search Everywhere-Feld als Haupteinstiegspunkt für die globale Suchfunktion.
  • Das Solution Configuration-Widget zum Verwalten von projektmappenbezogenen Konfigurationen.
  • Ein neues Run/Debug-Widget, mit dem Sie Ihre Run-Konfigurationen sehr einfach verwalten und steuern können.

Da wir jedoch den Arbeitsfluss der Rider-Gemeinde, die sich bereits an die alte Symbolleiste gewöhnt hat, nicht stören möchten, wird die neue Symbolleiste standardmäßig nur bei neuen Rider-Installationen aktiviert. Wenn Sie Rider bereits installiert haben, können Sie die neue Symbolleiste jederzeit unter View | Appearance | Toolbar (statt Toolbar Classic) aktivieren.

Problemansicht

Ein zentraler Überblick über alle potenziellen Probleme in einer Projektmappe kann sehr hilfreich sein, und deshalb freuen wir uns ganz besonders, Ihnen das Toolfenster Problems View vorstellen zu können. Problems View (der Tab Problems in der Rider-UI) bietet einen Überblick über alle potenziellen Probleme in einer Projektmappe, z. B. Projektladefehler, fehlgeschlagene NuGet-Wiederherstellungsprozesse, Inspektionen für die geöffnete Datei und alle SWEA-Fehler. Das Toolfenster besteht aus drei Tabs.

Current File

Hier finden Sie alle Fehlermeldungen, Warnungen, Vorschläge und Hinweise der Rider-Codeanalyse für die aktuell bearbeitete Datei. Die Funktionsweise ist mit unseren IntelliJ-basierte IDEs identisch – das Inspektionswidget am oberen Rand der vertikalen Bildlaufleiste führt direkt zu diesem Tab.

Toolset, Environment

In diesem Tab finden Sie alle Diagnosen und Meldungen zum Laden der Lösung, NuGet-Wiederherstellungsprozessen usw. Für jedes Problem wird eine Beschreibung und gegebenenfalls eine Liste der möglichen Korrekturen angezeigt. Bisher mussten Sie das Event Log-Toolfenster öffnen, um Detailinformationen zu diesen Diagnosemeldungen zu erhalten.

All Solution Files

Dies ist das neue Zuhause des SWEA-Toolfensters. Hier sehen Sie alle Fehler, die bei der Projektmappen-Fehleranalyse (Solution Wide Error Analysis, SWEA) gefunden wurden.

Neues Bookmarks-Toolfenster

Wir haben ein neues Bookmarks-Toolfenster eingeführt, das an die Stelle des ähnlichen Favorites-Toolfensters tritt.

Wenn Sie ein Lesezeichen hinzufügen, sortiert Rider es standardmäßig im Bookmarks-Toolfenster unter dem Knoten ein, der den Namen Ihres Projekts trägt. Jedes Mal, wenn Sie ein neues Lesezeichen hinzufügen, wird es an den Anfang der Liste unter diesem Knoten hinzugefügt. Sie können auch neue Knoten erstellen und Elemente dorthin ziehen.

Debugger

Debug-Tab mit neuer UI

Der Debug-Tab hat eine neue Bedienoberfläche! Die zahlreichen Änderungen stellen wir Ihnen im Folgenden vor.

In der Standardeinstellung gibt es drei Tabs: Threads & Variables, Console und Debug Output. Die weiteren Tabs wie Memory und Parallel Stacks sind ausgeblendet und können im Optionsmenü (Zahnrad ganz rechts) eingeblendet werden.

Wir haben die Symbolleiste auf der linken Seite komplett entfernt und die Symbole daraus in die obere Symbolleiste oder das Kontextmenü verschoben. Um die obere Symbolleiste so kompakt wie möglich zu halten, haben wir die Symbole neu angeordnet, sodass nur die wichtigsten Aktionen sichtbar sind. Die restlichen Symbole wurden in das Dropdown-Menü More (Drei-Punkte-Menü) verschoben. Die Symbole Hide Frames from Libraries und Hide/Show Threads wurden in das Kontextmenü der Threads-Ansicht verschoben.

Das Dropdown-Menü More enthält ein neues Untermenü Settings. Hier finden Sie eine Liste der gebräuchlichsten Einstellungen für den Debugger, damit Sie nicht erst den Dialog Settings/Preferences öffnen und unter Build, Execution, Deployment | Debugger nach ihnen suchen müssen.

Aktualisiertes Immediate-Fenster

Sie haben die Wahl zwischen zwei Layouts: maximiert und minimiert. Im minimierten Layout zeigt die Variables-Ansicht das Ausführungsergebnis nur in der Variable $result an. Im maximierten Layout werden neben der Variable $result der Verlauf der zuvor ausgeführten Zeilen sowie deren Ergebnisse angezeigt. Sie können mit dem Symbol Erweitern/Reduzieren zwischen den Layouts wechseln.

Add Watch wurde aus der Variables-Ansicht in das Immediate-Toolfenster verschoben und ist jetzt auch über die Tastenkombination Strg+Umschalt+Enter zugänglich.

Die neue Option Stop on Breakpoints hält die Auswertung eines Ausdrucks an Haltepunkten an. Wenn Sie diese Option deaktivieren, werden Haltepunkte bei der Auswertung ignoriert.

Um die Auswertung von Objekten mit vielen Eigenschaften zu vereinfachen, haben wir hier ein Evaluate-Symbol eingefügt, mit dem Sie das Evaluate-Fenster öffnen und das jeweilige Objekt direkt auswerten können. Die Baumstruktur der Objekteigenschaften ist in diesem Fenster viel einfacher zu überblicken.

Debuggen von UWP-Apps

Wir haben gute Nachrichten für UWP-Profis: Sie können Ihr UWP-Projekt direkt mit angehängtem Debugger starten. Sie müssen nicht wie bisher erst das Projekt ausführen und dann den Debugger manuell an den laufenden Prozess anhängen.

Unterstützung für Windows-Docker-Container

Sie können mit .NET (Core) und .NET Framework erstellte Apps in lokalen Docker-Containern unter Windows debuggen. Bisher konnte der Debugger nur mit .NET-Core-Apps in Linux-Docker-Containern umgehen.

Weitere Updates

Beim Erstellen eines Standarddelegaten (System.Func oder System.Action) können Sie unkompliziert zu der Methode oder dem Lambda-Ausdruck navigieren, auf den der Delegat verweist. Nutzen Sie dazu den Link Navigate unter dem Knoten des Delegaten in der Variables-Liste.

Wenn Sie einen event handler (delegate) mithilfe eines Lambda-Ausdrucks erstellen, können Sie im neuen Betrachter die Subscriber und erfassten Objekte genauer untersuchen.

Der Ereignishandler hat jetzt einen Knoten Subscribers mit einem Unterknoten Captured variables. Um schnell zur Stelle zu navigieren, an der ein Ereignis abonniert wurde, gibt es jetzt zu jedem Subscriber einen neuen Link Navigate.

Codeanalyse

C# 10

Die Liste der in Rider unterstützten C# 10-Merkmale wird immer länger. Wir freuen uns, Ihnen heute die Unterstützung folgender Merkmale vorzustellen: dateibezogene Namensräume, globales „using“, das CallerArgumentExpression-Attribut, Handler für interpolierte Zeichenfolgen und C# 10-Lambdas.

Beginnen wir mit dateibezogenen Namensräumen. Zusätzlich zur Unterstützung der neuen Syntax haben wir unter Settings/Preferences | Editor | Code Style | C# | Syntax Style | Code body | Namespaces eine neue Option Syntax style hinzugefügt, damit Sie den gewünschten Stil auswählen können. Wenn Sie einen Stil auswählen, zeigt Ihnen Rider bei Codeabschnitten, die nicht dem Stil entsprechen, Inspektionen an und schlägt Quick-Fixes vor, um die entsprechenden Änderungen vorzunehmen. Sie können die Fixes mit einem Klick auf das ganze Projekt oder sogar die gesamte Projektmappe anwenden.

Mit zwei Kontextaktionen können Sie Ihren Code auf den vorherigen Syntaxstil zurücksetzen: Convert to file-scoped namespace und Convert to block-scoped namespace.

Weitere Informationen: Dateibezogene Namensräume

Werfen wir nun einen kurzen Blick auf globale „using“-Anweisungen. Die Rider-Codeanalyse erkennt using-Anweisungen, die mit dem Schlüsselwort global gekennzeichnet sind und löst Symbole in allen Codedateien im Projekt entsprechend auf. Rider lässt Sie auch wissen, wenn eine globale using-Direktive in einer Datei an der falschen Stelle platziert wurde.

Rider hebt globale using-Direktiven, die im Projekt nicht verwendet werden, als ungenutzt hervor und bietet einen Quick-Fix zum Entfernen an.

Rider bietet eine umfassende Unterstützung für das CallerArgumentExpression-Attribut, einschließlich Code-Completion und Inspektionen, die Sie bei der korrekten Verwendung unterstützen.

Weitere Informationen: CallerArgumentExpression

In C# 10 wurde das neue Konzept der „Interpolated String Handlers“ eingeführt. Aus der Benutzerperspektive bedeutet dies, dass Zeichenfolgen-Interpolationen in .⁠NET 6 generell schneller sind und die neuen Handler auch die Verwendung von Span<char>-Werten in Interpolationslücken ermöglichen. Bibliotheksautoren können mit dieser Funktion steuern, ob Interpolationsausdrücke in Zeichenfolgen umgewandelt werden. Rider 2021.3 erkennt das Muster „Interpolated String Handlers“ in Bibliothekscode und kann jetzt an mehr Stellen die Verwendung von Zeichenfolgen-Interpolationsausdrücken empfehlen.

Rider hilft Ihnen, die optimale Performance aus record-Structs herauszuholen, indem es Ihnen empfiehlt, sie als readonly zu markieren. Um Typdeklarationen nicht unnötig mit Modifikatoren zu überfrachten, wird diese Inspektion nur angezeigt, wenn der record-Typ nicht mutierende Instanzmember hat und in der Projektmappe keine Mutationen über Setter erfolgen. Die projektmappenweite Analyse (SWEA) muss dafür aktiviert sein.

Mit C# 10 können Sie die Pattern-Matching-Syntax etwas vereinfachen, indem Sie für Zugriffe den Punkt-Operator statt verschachtelte Objektmuster verwenden.

Rider bietet eine entsprechende Inspektion mit Quick-Fix sowie eine Kontextaktion zum Rückgängigmachen der vom Quick-Fix vorgenommenen Änderungen an.

Zu guter Letzt:

  • Wir haben die Unterstützung von C# 10-Lambdas verbessert: In Projekten mit .⁠NET 6 Minimal API sollten Sie weder über roten Code noch über falsche Fehlerhinweise stolpern. Als Bonus hilft Ihnen Rider dabei, die korrekte Syntax zu verwenden und Klammern einzufügen, wenn diese vom Compiler erwartet werden.
  • Rider unterstützt jetzt Program als gültigen generierten Klassennamen für Code mit Top-Level-Anweisungen.
  • Für static abstract Schnittstellenmember ist jetzt eine Erstunterstützung verfügbar. Die Codeanalyse erkennt diese Konstruktion als gültig an, sodass Sie sich nicht mehr mit rot eingefärbtem Code herumschlagen müssen. Die Funktion Generate missing members kann mit Membern, die static abstract sind, richtig umgehen. Diese Version weist zudem mit Randleistenmarkierungen auf Vererbung hin und ermöglicht die Navigation in der Vererbungshierarchie.

Nullable-Referenztypen

Es ist nicht ungewöhnlich, dass jemand Code von anderswo kopiert – zum Beispiel von stackoverflow.com. Nullable-Referenztypen sind heute in C# enthalten, und es gibt bereits Codebeispiele, die die NRT-Syntax nutzen. Aber was passiert, wenn NRT in Ihrer Projektmappe nicht aktiviert ist? Rider bietet zwei neue Quick-Fixes, um diese Syntax aus eingefügtem Code zu entfernen: Replace with JetBrains.Annotations attributes und Remove nullable annotations without ‘#nullable’ context.

Von Zeit zu Zeit kann es zu Abweichungen zwischen der Nullability von Typargumenten und ihren Nullability-Einschränkungen kommen. Es gibt jetzt Quick-Fixes für solche Fälle, die unter anderem folgende Möglichkeiten bieten:

  • Nullable-Annotationen aus Typargumenten entfernen.
  • notnull-Einschränkungen aus Typargumenten entfernen.
  • Nullable-Werte in Typparametern zulassen.
  • Nullable-Werte in Typparametern, die als Typargumente verwendet werden, nicht zulassen.

Die Korrektur von Parameterannotationen mit Nullable-Standardwerten kann mittels Bulk-Quick-Fix in einer Datei, einem Projekt oder der gesamten Projektmappe erfolgen.

Es gibt auch einen neuen Bulk-Quick-Fix, der Parameter nullbar macht, wenn sie innerhalb der Methode auf null überprüft werden.

C#-Codeanalyse

Wir haben einige neue Quick-Fixes und eine Kontextaktion für statische lokale/anonyme Funktionen mit Closures eingeführt:

  • Der Quick-Fix Allow closures entfernt den Modifikator static von einer lokalen oder anonymen Funktion, wenn sie Closures enthält.
  • Der Quick-Fix Pass closure as a parameter verschiebt Closures aus statischen lokalen Funktionen in Parameter.
  • Die Kontextaktion Pass closure as a parameter verschiebt Closures aus nicht statischen lokalen Funktionen in Parameter.

Die neue Inspektion Simplify string interpolation mit entsprechendem Quick-Fix ersetzt Aufrufe von .PadLeft() und .PadRight() in den Platzhaltern von interpolierten Zeichenfolgen durch Ausrichtungsausdrücke.

Neben dem Hinzufügen der neuen C# 10-Datensatzstruktur record struct haben wir auch die Unterstützung regulärer Structs erweitert. Viele verwenden für ihre DTOs immer noch Klassen mit Objektinitialisierern. Jetzt können Sie all diese Verwendungen schnell in Konstruktoren mit Parametern umwandeln. Dies kann entweder über die record-Deklaration oder über einen beliebigen Objektinitialisierer erfolgen. Beachten Sie, dass auch DTOs konvertiert werden können, die einen Konstruktor mit Eigenschaftszuweisungen definieren.

Rider warnt Sie schon seit einiger Zeit vor uneinheitlichen Locks auf Feldern. In dieser Version fügen wir eine ergänzende Inspektion hinzu, die auch die Reihenfolge mehrerer gesperrter Ressourcen berücksichtigt und Sie über mögliche Deadlock-Zyklen informiert.

Rider hat die Plausibilitätsprüfungen für ganzzahlarithmetische Ausdrücke auf weitere Ganzzahltypen wie byte, sbyte, short, ushort, uint, long, ulong und enum erweitert. Dadurch wird es leichter, unerreichbare Verzweigungen zu vermeiden.

Codeanalyse-Performance

Quick-Fixes und Kontextaktionen benötigen jetzt weniger Zeit bei der Anwendung auf einen Ordner, ein Projekt oder eine Projektmappe.

Wenn Solution-Wide Error Analysis (SWEA) (Projektmappenweite Fehleranalyse) mit Monitor warnings aktiviert ist, überspringt Rider jetzt anhand der SWEA-Ergebnisse die Dateien, in denen das gesuchte Problem nicht vorhanden ist. Dadurch wird der Zeitaufwand für das Finden der zu behebenden Probleme erheblich reduziert.

Auch für diejenigen, die SWEA in ihren Projekten nicht aktiviert haben, haben wir eine gute Nachricht: Rider nutzt jetzt alle verfügbaren CPU-Kerne, um die Codeanalyse parallel durchzuführen. Dies reduziert die Gesamtzeit beim Ausführen von Quick-Fixes und Kontextaktionen.

 

Wir haben die Leistung des Daemons für Dateien mit riesigen Methoden erheblich verbessert. Dies gilt insbesondere für:

  • Methoden mit großen oder verschachtelten Bedingungsausdrücken, Tupelausdrücken oder switch-Ausdrücken.
  • Methoden mit vielen Typprüfungen, wenn Nullable-Referenztypen deaktiviert sind.
  • Methoden mit vielen Indexzugriffen, wenn Nullable-Referenztypen aktiviert sind.
  • Methoden mit vielen Closures, wenn Nullable-Referenztypen aktiviert sind.

SQL-Sprachinjektion

Wir haben die Unterstützung für SQL-Sprachinjektionen verbessert. Wir unterstützen jetzt viele häufige Fälle, in denen SQL-Code direkt in C#-Code enthalten sein kann.

SQL-Abfragestrings werden in string.Format-Methoden, interpolierten Zeichenfolgen und einfachen Verkettungen von Zeichenfolgen korrekt aufgelöst.

Es treten keine Fehler mehr auf, wenn SQLParameter-Variablen für Parameter in SQL-Abfragestrings mit dem Microsoft SQL Server-Dialekt oder der Dapper-Bibliothek verwendet werden.

Game-Entwicklung

Unity

In dieser Rider-Version wurde die Unterstützung von Assembly-Definitionsdateien umfassend aktualisiert. Sie können mit Strg+Klick zu einer Referenz navigieren, Verwendungen von Assembly-Definitionen im gesamten Projekt – und sogar in referenzierten Paketen – finden, Assembly-Definitionen umbenennen und bei der Eingabe neuer Referenzen Completion-Vorschläge nutzen.

Rider kommt auch mit GUID-Referenzen zurecht und zeigt einen hilfreichen Hint mit dem Namen der Assembly-Definition an. Alt+Enter ermöglicht die Konvertierung zwischen namentlichen und GUID-basierten Referenzen.

Rider markiert jetzt nicht erfüllte define constraints in Assembly-Definition-Dateien. Dadurch ist leicht ersichtlich, warum eine Assembly ausgeschlossen wurde. Sie erhalten sogar Completion-Vorschläge für define-Symbole!

Das Einrichten von version defines ist mit Completion für Paketnamen und einem Inlay-Hint für die aktuell installierte Version ebenfalls einfacher geworden. Rider markiert zudem das Symbol, wenn die Bedingung nicht erfüllt ist.

Rider zeigt jetzt Quellcode-Dateien von referenzierten Unity-Paketen in einem speziellen Kontext an, der Informationen darüber liefert, welche Symbole beim Kompilieren des Pakets definiert waren. Dies bedeutet, dass die Quellcode-Dateien mit korrekt hervorgehobenen Präprozessor-Zweigen angezeigt werden.

Der von Unity im [Tooltip]-Attribut bereitgestellte Text kann vom Inspektor beim Bearbeiten von Feldern anzeigen werden. Wenn Sie ein serialisiertes Feld verwenden, zeigt Rider diesen Text auch im Kurzdoku-Popup an. Außerdem gibt es eine neue Kontextaktion zum Erstellen des Tooltips aus der XML-Dokumentation und umgekehrt.

Die Unterstützung für das Debuggen von iOS-Geräten über USB wurde auf Apple-Silicon-Prozessoren erweitert. Zudem fügt Rider in dieser Version Unterstützung für Linux hinzu.

Der Asset-Index sucht jetzt in referenzierten Paketen. Dies bedeutet, dass Rider Codeverwendungen in Prefabs basierend auf Assets in Paketen finden kann.

Das Metadatei-Tracking wurde komplett neu geschrieben, um mehr Anwendungsfälle abzudecken. Es sollte jetzt reibungslos funktionieren, wenn Sie Dateien im Unity Explorer-Toolfenster hinzufügen, entfernen, umbenennen, verschieben oder refaktorieren.

Wie üblich behebt diese Version auch einige Fehler, zum Beispiel beim Aktualisieren des Asset-Index, wenn die Datei von bestimmten Arten von externen Apps aktualisiert wird, beim Öffnen von Dateien auf Apple-Silicon-Geräten und beim Aktualisieren der Burst-Analyse passend zu den Änderungen im Burst-Compiler. Wir haben auch die Performance von Rider beim Suchen nach installierten Unity-Versionen und beim Aktualisieren des Unity-Log-Viewer-Toolfensters verbessert.

Unreal Engine Early Preview

Unreal-Engine-Tests

Wenn Sie Ihrem Spiel Tests mit dem Unreal-Engine-Testframework hinzufügen, kann Rider jetzt Ihre Tests starten und die Ergebnisse im Unit Test-Toolfenster anzeigen. In diesem Toolfenster können Sie die Testergebnisse überprüfen und einzelne, fehlgeschlagene oder alle Tests bei Bedarf wiederholen. Sie können Tests auch nach den an sie übergebenen Flags gruppieren.

Weitere Informationen

Rider for Unreal Engine macht weitere Fortschritte auf dem Weg von der öffentlichen Preview zum finalen Release. Vorerst wird diese kostenlose Preview nach dem Absenden eines Formulars als separater Rider-Build zur Verfügung gestellt.

Frameworks

WPF

Die XAML-Vorschau funktioniert jetzt für Anwendungen, die auf den SDKs .NET 6, .NET 5 und .NET Core 3.x basieren. Sie können die Ergebnisse jeder Änderung, die Sie im XAML-Code vornehmen, direkt in der Vorschau in Rider sehen.

Xamarin

  • Im Plist-Editor haben wir Unterstützung für Standard-Xcode-Schemata implementiert. Dadurch kann Rider leicht lesbare Schlüsselnamen bereitstellen, Werte nach Schlüsseltyp validieren und eine Liste der möglichen Schlüssel bereitstellen, wenn Sie der plist einen neuen Schlüssel hinzufügen. Diese Schemata funktionieren sowohl unter macOS als auch unter Windows.
  • Sie können jetzt direkt im Editor Android-Komponenten als NuGet-Pakete herunterladen.
  • Unterstützung für AndroidX-Bibliotheken ist verfügbar, wenn das Projekt sie unterstützt.
  • Das Layout des Android-Editors wurde verbessert.

Codebereinigung, Formatierung und Codestile

Neuformatieren und Bereinigen beim Speichern

Wir haben die Einstellung Reformat und Cleanup on Save eingeführt. Sie sorgt dafür, dass jedes Mal, wenn Sie in der IDE explizit Save oder Save All aufrufen, Ihr Code neu formatiert und bereinigt wird. Wenn der Speichervorgang implizit ausgelöst wird, zum Beispiel durch einen Buildvorgang, einen Tabwechsel oder einen Commit, wird der Code nicht neu formatiert. Stattdessen fügt Rider das geänderte Dokument einer internen Liste von Dateien hinzu, die beim nächsten expliziten Speichern bereinigt und neu formatiert werden sollen. Wir hoffen, dass diese Funktion dazu beitragen wird, dass Ihr Code stets ordentlich formatiert ist, ohne dass Sie sich darum kümmern müssen.

Um diese Einstellung zu aktivieren und anzupassen, gehen Sie zu Preferences/Settings | Tools | Actions on Save. Dort können Sie auch das Bereinigungsprofil auswählen, das verwendet werden soll. Die Liste der verfügbaren Profile wird von Preferences/Settings | Editor | Code Cleanup übernommen. Sie können auch angeben, ob die Aktion auf die gesamte Datei oder nur auf die geänderten Zeilen angewendet werden soll.

Die Funktion Reformat und Cleanup on Save hält sich übrigens an die Einstellung Do not format. Unter Preferences/Settings | Editor | Code Style | Formatter können Sie Dateien und Verzeichnisse von der Formatierung ausschließen.

Weitere Verbesserungen

Die Funktion Reformat und Cleanup funktioniert für mehrere ausgewählte Dateien und Verzeichnisse im Solution Explorer-Toolfenster.

Das Formatierungsmodul bietet einige neue Einstellungen:

  • Eine Option ermöglicht das Einrücken von Lambda- oder Eigenschaftsmuster-Klammern in Anweisungsbedingungen – zum Beispiel in if() und while().
  • Eine weitere Option ermöglicht das Ausrichten von Bedingungen innerhalb von Klammern in Anweisungen wie if(), foreach() usw. Diese Option ist standardmäßig aktiviert.
  • Neue Optionen ermöglichen das Umbrechen, Aufteilen, Ausrichten und Ausrücken von Binärmustern wie x is Foo or Bar or Baz.

Beginnend mit dem .NET 5 SDK können Sie globale AnalyzerConfig-Dateien zum Konfigurieren der Analyzer-Optionen von Visual Studio verwenden. Rider 2021.3 kann Codestilinformationen aus diesen globalen AnalyzerConfig-Dateien auslesen und die Rider-Regeln entsprechend anpassen.

Webentwicklung

Neue Inspektion zum Aktualisieren von Abhängigkeiten

In Rider 2021.3 können Sie Ihre npm-Pakete direkt im Editor auf die neueste Version aktualisieren! Öffnen Sie die Datei package.json, legen Sie die Einfügemarke auf die Paketversion, die Sie aktualisieren möchten, drücken Sie Alt+Enter und wählen Sie dann Update ‘Paketname’ to the latest version. Wenn Sie mit der Maus über die Paketversion fahren, wird außerdem ein Quick-Fix angezeigt. Weitere Details zu den Gründen für diese Inspektion finden Sie in diesem Blogbeitrag.

Verbesserte Code-Completion für HTML

Wir haben die Funktionsweise der HTML-Completion verbessert. Wenn Sie im Editor einen Tag-Namen oder eine Abkürzung eingeben oder die Code-Completion explizit aufrufen, zeigt Rider sofort relevante Vorschläge an. Bisher wurden die Vorschläge nur angezeigt, wenn Sie das <-Zeichen eingegeben haben. Außerdem sollte die Code-Completion für Zeichenentitäten jetzt besser funktionieren.

NuGet-Unterstützung

Rider kann Binding Redirects für NuGet-Pakete in .NET-Framework-Projekten generieren. Wenn in Ihrem Projekt Binding Redirects benötigt werden, fügt Rider sie der Datei App.config oder Web.config hinzu.

Binding Redirects werden generiert, wenn ein NuGet-Paket installiert oder aktualisiert wird. Sie können Rider jedoch jederzeit manuell zur Generierung von Binding Redirects auffordern. Öffnen Sie dazu im Solution Explorer-Toolfenster das Kontextmenü des Projekts und klicken Sie auf Tools | Generate Binding Redirects.

Auf der Properties-Seite des Projekts befindet sich im Applications-Tab eine neue Eigenschaft namens Auto-Generate Binding Redirects. Diese veranlasst MSBuild, beim Kompilieren des Projekts Binding Redirects zu generieren, wenn in der Datei App.config keine Redirects vorhanden sind.

Neben der Unterstützung für Binding Redirects haben wir noch eine kleine UX-Verbesserung umgesetzt. Sie können NuGet-Pakete jetzt direkt im Solution Explorer-Toolfenster deinstallieren.

Apple-Silicon-Unterstützung

Ab dieser Version läuft Rider nativ auf Mac-Computern mit Apple-Silicon-Prozessoren. Rider 2021.3 verwendet die folgenden Runtimes:

  • Die Apple-Silicon-kompatible JetBrains-Runtime für das Frontend.
  • .NET6 RTM für das Backend.

Eine Übersetzung von x64 zu ARM64 ist nicht mehr erforderlich! Rider läuft jetzt superschnell auf Apple-Chips!

F#-Unterstützung

Die größte Neuigkeit ist, dass Rider jetzt F# 6 offiziell unterstützt! Diese Version bietet außerdem zahlreiche Qualitätsupdates für Code-Completion, Refactoring und Navigation sowie verschiedene Verbesserungen bei der F#-Sprachunterstützung.

Das Refactoring Introduce Variable wurde umfassend verbessert. Bei Bedarf empfiehlt es die Dekonstruktion von Tupeln und Union-Typen mit einem einzigen Fall, und in Berechnungsausdrücken schlägt es die Verwendung von Berechnungstypen vor. Darüber hinaus werden in entsprechenden Fällen die Schlüsselwörter use und use! empfohlen, und wir haben die Platzierung von hinzugefügten Bindings verbessert.

Dieses Release enthält auch eine Reihe von Updates für die Code-Completion, darunter eine bessere Sortierung der Vorschläge und eine Erstumsetzung der kontextbasierten Schlüsselwortfilterung (einige Schlüsselwörter werden nicht mehr angezeigt, wenn sie nicht anwendbar sind). Die rekursive Verwendung von F#-Funktionen ist jetzt einfacher, da Sie nicht erst zur umschließenden Funktion zurückgehen und manuell rec hinzufügen müssen.

Bei der Code-Completion gibt es ein weiteres wichtiges Update. Beim Vervollständigen von Union-Case-Mustern schlägt Rider die Verwendung von Pattern-Matching für die Felder vor.

Neue Symbole in den Ergebnissen von Find Usages helfen Ihnen, Aufrufe, partielle Anwendungen, Patterns und andere Verwendungsarten zu unterscheiden.

Rider kann jetzt Ihre Auswahl in interpolierten Zeichenfolgen korrekt erweitern. Special thanks to Andrew Rublyov for this contribution! Auch bei _ und verschiedenen Klammertypen wurde das Auswahlverhalten verbessert.

Die F#-Unterstützung wurde darüber hinaus durch weitere kleinere Quick-Fixes, Refactorings und andere Verbesserungen erweitert. Please take a look at the full release notes for more information.

Plugins

dotCover
dotUltimate

Wir haben eine neue Code-Vision-Metrik eingeführt: Covering tests. Diese Kennzahl wird angezeigt, wenn Rider über Coverage-Informationen für das Projekt verfügt und wenn die Methode (bzw. Eigenschaft, Indexer oder Ereignis) von mindestens einem Test abgedeckt wird.

Unter Settings/Preferences | Editor | Code Vision kann diese Metrik aktiviert oder deaktiviert werden.

Sie können jetzt Unit-Tests aus einem Popup-Fenster starten, das erscheint, wenn Sie auf die Coverage-Zeile auf der linken Seite des Code-Editors klicken.

dotTrace
dotUltimate

Mit dem dotTrace-Plugin können Sie jetzt unter macOS und Linux Daten zu asynchronen Aufrufen sammeln. Um diese Daten zu nutzen, führen Sie das Profiling im Timeline-Modus aus. Der Aufrufbaum Call Tree zeigt asynchrone Aufrufe an, einschließlich awaits und continuations.

Das dotTrace-Plugin kann jetzt unter macOS und Linux im Timeline-Modus Kindprozesse von Anwendungen profilen. Unterstützt wird dies nur bei Anwendungen ab .⁠NET 5.

Navigation und Find Usages

Neue Randleistenmarkierungen

Wir haben einige weitere Randleistenmarkierungen hinzugefügt, damit Sie schnell durch die Vererbungsstruktur einer Klasse, Schnittstelle oder Struktur navigieren können. Die neuen Symbole ↑O und ↑I zeigen an, dass eine Codeentität eine andere Klasse oder Schnittstelle erbt bzw. implementiert. Wenn die Vererbungslinie komplex ist, wird durch Auswahl des Symbols ein Menü mit allen übergeordneten Elementen bis hin zum Anfang der Vererbungshierarchie angezeigt. Wenn eine Klasse eine Schnittstelle und eine Klasse gleichzeitig implementiert bzw. erbt, zeigt Rider dies durch das ↑IO-Symbol in der Randleiste an.

Darüber hinaus ist in dieser Version das Randleistensymbol für Klassenmember standardmäßig aktiviert. Rider zeigt in der linken Randleiste neben einem Klassenmember das Symbol ↓O an, wenn der Klassenmember in abgeleiteten Klassen überschrieben wird. Durch Anklicken des Symbols können Sie:

  • Zu einem überschreibenden Member in einer abgeleiteten Klasse navigieren.
  • Ein Menü mit einer Liste von Klassenmembern aus anderen Klassen anzeigen, die diesen Member überschreiben.

Find Usages für benutzerdefinierte implizite Umwandlungsoperatoren

Find Usages kann jetzt Verwendungen von benutzerdefinierten impliziten Umwandlungsoperatoren finden! Diese Funktion basiert auf demselben Mechanismus, der für die Typkonvertierungs-Hints verwendet wird.

Mit einer solchen Suche können Sie feststellen, ob benutzerdefinierte implizite Umwandlungsoperatoren verwendet werden und gegebenenfalls zu den Codeblöcken mit den Umwandlungen navigieren.

Bitte beachten Sie, dass dieser Algorithmus einige Zeit benötigt, bis die Ergebnisse vorliegen und angezeigt werden können.

Unterstützung für Datenbanken

Aggregate im Dateneditor

Wir haben die Möglichkeit hinzugefügt, eine aggregierte Ansicht für einen Zellenbereich anzuzeigen. Diese lang erwartete Funktion hilft Ihnen bei der Verwaltung Ihrer Daten und dürfte Ihnen so manche zusätzliche Abfrage ersparen! Der Dateneditor wird dadurch noch leistungsfähiger und benutzerfreundlicher und kommt Excel und Google Tabellen einen Schritt näher.

Wählen Sie einfach den gewünschten Zellenbereich aus, klicken Sie mit der rechten Maustaste und wählen Sie Show Aggregate View.

Zuordnungen zwischen DDL- und echten Datenquellen

Dieses Release ist eine logische Fortsetzung des letzten, das die Möglichkeit einführte, eine DDL-Datenquelle anhand einer echten Datenquelle zu generieren. Dieser Workflow wird jetzt vollständig unterstützt. Sie haben folgende Möglichkeiten:

  • Generieren einer DDL-Datenquelle aus einer echten Datenquelle: siehe Ankündigung zu DataGrip 2021.2.
  • Zuordnen einer DDL-Datenquelle zu einer echten Datenquelle.
  • Vergleichen beider Datenquellen und Synchronisierung in beiden Richtungen.

Zur Erinnerung: Eine DDL-Datenquelle ist eine virtuelle Datenquelle, deren Schema auf einer Reihe von SQL-Skripten basiert. Das Speichern dieser Dateien in Ihrer Versionsverwaltung bietet Ihnen die Möglichkeit, Ihre Datenbanken zu versionieren.

Auf dem neuen Tab DDL mappings in den Datenkonfigurationseigenschaften können Sie vorgeben, welche reale Datenquelle welcher DDL-Datenquelle zugeordnet ist.

Neues Diff-Fenster für Datenbanken

Das neue Datenbank-Diff-Fenster ist über das Kontextmenü zugänglich. Es bietet eine bessere Benutzerführung und zeigt auf der rechten Seite genau an, welches Ergebnis Sie bei einer Synchronisierung erhalten.

Die Legende im rechten Fensterbereich zeigt an, was die Farben für das potenzielle Ergebnis bedeuten:

  • Grün und kursiv: Ein Objekt wird erstellt.
  • Grau: Ein Objekt wird gelöscht.
  • Blau: Ein Objekt wird geändert.

Im Tab Script Preview sehen Sie das Ergebnisskript, das entweder in einer neuen Konsole geöffnet oder in diesem Dialog ausgeführt werden kann. Die Änderungen, die durch dieses Skript vorgenommen werden, führen dazu, dass die Datenbank rechts (Ziel) zu einer Kopie der Datenbank links (Quelle) wird.

Neben dem Tab Script preview enthält der untere Fensterbereich zwei weitere Tabs: Object Properties Diff und DDL Diff. Sie zeigen die Unterschiede zwischen den jeweiligen Versionen des Objekts in Ursprungs- und Zieldatenbank an.

Sonstiges

Projekteigenschaften

Diese Version bietet mehrere neue Einstellungen im Dialog Project Properties:

  • Sie können das Anwendungssymbol im Abschnitt Resources der Seite Application ändern.
  • Auf der neuen Seite Build Events können Sie Befehle angeben, die vor oder nach dem Buildvorgang ausgeführt werden sollen.
  • Die Seite Inspections enthält mehrere neue Projekteigenschaften, die sich auf die Codeanalyse beziehen: Localizable, Localizable inspector und Solution-Wide inspections.
  • Auf der Seite Reference Paths können Sie Referenzpfade für ein Projekt konfigurieren.
  • Der Applications-Tab enthält eine neue Eigenschaft namens Auto-Generate Binding Redirects. Lesen Sie den Abschnitt NuGet-Unterstützung weiter oben, um mehr über Binding Redirects zu erfahren.

Projektmappen-Eigenschaften

Die Tabelle im Dialog Solution Properties wurde um die Spalte Dependencies erweitert, um die Build-Abhängigkeiten des Projekts angeben zu können. Einige der Projekte können nicht ausgewählt werden, um zirkuläre Abhängigkeiten zu vermeiden.

Laufzeitkonfigurationen

Ab Version 2021.3 importiert Rider beim Laden eines Projekts alle .pubxml-Dateien aus Properties/PublishProfiles und wandelt sie in Run-Konfigurationen um. Wenn Sie eine neue .pubxml-Datei hinzufügen, wird automatisch eine neue Run-Konfiguration generiert. Sie müssen also diese Run-Konfigurationen nicht mehr manuell erstellen!

In einem Auswahlfeld können Sie die Runtime, die zum Ausführen der Anwendung verwendet werden soll, explizit auswählen. Die Liste kann je nach verwendetem Betriebssystem folgende Einträge umfassen: .NET/.NET Core, .NET Framework und Mono.

EditorBrowsable-Unterstützung in der Code-Completion

Sie können jetzt die Code-Completion-Liste so anpassen, dass Elemente entsprechend dem EditorBrowsable-Attribut gefiltert werden. Wählen Sie einfach unter Preferences | Editor | General | Code Completion in der Einstellung Filter members by EditorBrowsable attribute das gewünschte Verhalten aus.

Schriftgröße in allen Tabs ändern

Wie von Ihnen gewünscht kann die Schriftgröße jetzt in allen geöffneten Tabs gleichzeitig mit dem Mausrad angepasst werden ( + Mausrad auf macOS und Strg + Mausrad auf Windows und Linux). Um diese Funktion zu aktivieren, öffnen Sie Preferences / Settings | Editor | General, wählen Sie Change font size with Command + Mouse Wheel in und aktivieren Sie die Option All editors. Wenn Sie Active editor auswählen, wird durch diese Aktion nur die Schriftgröße der aktuell bearbeiteten Datei geändert.