Das ist neu in Rider

Rider 2022.3 unterstützt das .NET 7 SDK, einschließlich der neuen Sprachmerkmale von C# 11. Diese Version bietet erhebliche Leistungssteigerungen – insbesondere durch verkürzte Startzeiten und die Möglichkeit, Rider über Remote-Entwicklung in WSL 2 (Windows-Subsystem für Linux 2) auszuführen. Wir haben auch einige wichtige UX/UI-Änderungen vorgenommen. So können beispielsweise bei der Verwendung mehrerer Bildschirme Toolfenster angedockt werden. Und nicht zuletzt vertieft dieses Release die Integration mit den Editoren von Unity und Unreal.

Performance

Performance

Wir haben mehrere Änderungen vorgenommen, um den Start von Rider zu beschleunigen und die Zeit bis zur Einsatzbereitschaft nach dem Öffnen einer Lösung zu verkürzen:

  • Das Rider-Installationsprogramm kann jetzt die Programmdateien in die Ausschlussliste von Windows Defender aufnehmen, was beim Start für einen deutlichen Geschwindigkeitsschub sorgt.
  • Rider kann jetzt eine Projektmappendatei laden und sofort die Projektbaumstruktur anlegen, ohne auf die Initialisierung des Backends warten zu müssen.
  • Wir haben alle Ladebalken aus dem Solution Explorer entfernt, um die Übersichtlichkeit zu verbessern. Ab sofort wird der Ladefortschritt in der IDE-Statusleiste angezeigt.
  • Wir haben einen neuen C#-Parser eingeführt, der bereits beim Start eine grundlegende Syntaxhervorhebung bietet. Sobald Rider gestartet ist und die gesamte Projektmappe geladen wurde, wird der vollständige Leistungsumfang bereitgestellt.
  • Auch die Backend-Leistung von Rider wurde durch mehrere Verbesserungen gesteigert. We’ve enabled server garbage collection (GC) to get better memory throughput for the backend process. Außerdem haben wir die Laufzeitumgebung für den Backend-Sprachdienst von Rider von .NET 6 auf .NET 7 (die neueste Version) aktualisiert. Und nicht zuletzt erstellen wir jetzt Builds zur Entwurfszeit parallel, wenn die Projekte keine Abhängigkeiten haben. Insgesamt werden durch diese Änderungen Projektmappen mit vielen Projekten merklich schneller geladen.

Erfahren Sie mehr über die Performance-Verbesserungen in Rider hier.

WSL 2-Unterstützung

Rider unterstützt jetzt WSL 2 (Windows-Subsystem für Linux 2) über die Remote-Entwicklungsfunktion der IDE. Dies bedeutet, dass Sie Rider in einer WSL-2-Instanz verwenden können, um Ihre Projektmappen und Quelldateien zu durchsuchen und Anwendungen so zu kompilieren, zu debuggen und auszuführen, als ob sie sich auf dem lokalen System befinden würden.

Der einfache Einrichtungsprozess kann direkt auf dem Begrüßungsbildschirm von Rider gestartet werden. Die Bedienoberfläche wird über Remote-Entwicklung bereitgestellt, sodass WSLg nicht erforderlich ist. Ein lokaler RemoteDev-Client wird automatisch installiert. Weitere Informationen finden Sie in der Dokumentation für die Remote-Entwicklung.

UI/UX

Toolfenster andocken

Wir haben die oft gewünschte Option zum Andocken von Toolfenstern an schwebende Editor-Tabs endlich umgesetzt! Damit Sie Ihren Arbeitsbereich komfortabler einrichten und Rider bequem mit mehreren Bildschirmen verwenden können, lassen sich Toolfenster jetzt aus dem Hauptfenster herauslösen und an schwebende Editor-Tabs andocken.

Update für Search Everywhere

Wir haben den Algorithmus zur Erstellung der Ergebnisliste in Search Everywhere optimiert, um sie berechenbarer und die Auswahl der gesuchten Elemente treffsicherer zu machen. Wenn Sie mit der Sucheingabe beginnen, bleiben die zuerst angezeigten Suchergebnisse unverändert und werden nicht wie in früheren Versionen neu sortiert, wenn weitere Ergebnisse gefunden werden.

Neuer Dialog zum Anhängen an einen Prozess

Wir haben einen neuen Dialog Attach to process eingeführt, um Ihre Nutzungserfahrung zu verbessern, insbesondere beim Anhängen an einen Prozess über SSH. Dadurch können Sie den richtigen Prozess schneller finden und auswählen, und die IDE merkt sich außerdem den gewählten Debugger.

Überarbeitete Einfügeaktion

Überarbeitete Einfügeaktion

Wir erleichtern Ihnen die Codebearbeitung durch eine Optimierung der Einfügeaktion (⌘V / Strg+V). Wenn Sie jetzt eine Zeile kopieren (⌘C / Strg+C) oder ausschneiden (⌘X / Strg+X), ohne dass Code ausgewählt ist, wird die kopierte Zeile beim Einfügen oberhalb der aktuellen Zeile und nicht wie früher an der Einfügemarke eingefügt.

JSON als Klassen einfügen

JSON als Klassen einfügen

Die neue Aktion Edit | Paste Special: JSON as Classes ermöglicht das „intelligente Einfügen“ von Objekten. Wenn Sie einen JSON-Abschnitt kopieren und mit dieser Aktion einfügen, werden automatisch C#-Klassen aus den JSON-Daten generiert.

Neue UI Early Preview

Sie sind jetzt herzlich eingeladen, unter Preferences/Settings | Appearance & Behavior | New UI Preview die neue Bedienoberfläche für IntelliJ-basierte IDEs zu aktivieren. Die neue Oberfläche ist Teil unserer kontinuierlichen Bemühungen, die visuelle Komplexität der IDE zu reduzieren und Ihnen zu helfen, sich auf Ihre Arbeit zu konzentrieren.

Sonstiges

Darüber hinaus nehmen wir weiterhin kleine UI/UX-Optimierungen vor, um Rider noch relevanter und nützlicher zu machen:

  • Wir haben das Add-Menü aufgeräumt, sodass es nur relevante Einträge für die aktuelle Projektmappe bzw. das aktuelle Projekt anzeigt.
  • Die Aktion Open in Terminal befindet sich jetzt im Kontextmenü des Solution Explorer.
  • Der Eintrag File | New im Hauptmenü wurde in File | New Solution umbenannt, um die tatsächlich ausgeführte Aktion genauer zu beschreiben.
  • Wir haben eine Aktion hinzugefügt, mit der Sie im Solution Explorer zwischen Projektmappen wechseln können. Nach einem Rechtsklick auf eine geschlossene Projektmappe können Sie im Kontextmenü Open anklicken, um die Projektmappe zu öffnen und gleichzeitig die bisher geöffnete Projektmappe zu schließen.

Unterstützung für .NET 7 SDK

Unterstützung für .NET 7 SDK

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

  • Aktualisierte Projektvorlagen.
  • Zentrale Paketverwaltung mit NuGet.
  • Unterstützung für die Minimal-API-Routengruppen von ASP.NET im Endpoints-Toolfenster.
  • Neue Sprachmerkmale aus C# 11, darunter dateilokale Typen, UTF-8-Literale, ref-Felder und das Schlüsselwort scoped.
  • Erstellen, Ausführen und Debuggen von Projekten, die das neue SDK verwenden.

C#-Unterstützung

C# 11

UTF-8-Literale

UTF-8-Literale

Wir haben grundlegende Unterstützung für UTF-8-Literale eingeführt. Bei der Codeanalyse wird nun vorgeschlagen, ein Literal mit dem Suffix u8 statt der Methode System.Text.Encoding.UTF8.GetBytes() oder einem Byte-Array mit UTF8-Symbolen zu verwenden. Hinzu kommen mehrere Compiler-Warnungen und -Fehler für UTF-8-Literale.

Dateilokale Typen

Dateilokale Typen erhalten nun eine grundlegende Unterstützung. Diese umfasst die Erkennung der neuen Syntax, den Zugriffsmodifikator file für Typen sowie Compiler-Warnungen und -Fehler mit entsprechenden Quick-Fixes wie z. B. Move class to outer scope, wenn der Modifikator file für eine geschachtelte Klasse angegeben wird. Mit einer nützlichen Kontextaktion können Sie außerdem einen allgemeinen Typ in einen dateilokalen Typ umwandeln.

Raw-Zeichenfolgen

Raw-Zeichenfolgen

Rider kann jetzt reguläre und Verbatim-Zeichenfolgen in ihre Raw-Gegenstücke umwandeln. Dies bedeutet auch, dass zahlreiche bestehende Funktionen für Zeichenfolgen nun auch für Raw-Zeichenfolgen verfügbar sind.

List-Pattern-Vorschläge

List-Pattern-Vorschläge

Ab diesem Release schlägt die IDE die Verwendung der in C# 11 eingeführten List-Pattern-Syntax zur Prüfung der Elemente einer Collection vor (anstelle der herkömmlichen Collection-Längenprüfungen mit anschließendem Indexzugriff).

„static virtual“-Modifikator für Member

Ab C# 11 können Sie static-Member in Schnittstellen mit den Modifikatoren abstract und virtual versehen und solche Member in generischem Code mit Typparametern verwenden, die durch diese Schnittstelle spezifiziert sind. Rider wurde aktualisiert, um polymorphe static-Member genauso zu behandeln wie gewöhnliche polymorphe Member:

  • Vererbungsmarkierungen in der Randleiste.
  • Navigation zu implementierenden/übergeordneten Membern.
  • Generierung fehlender Implementierungen.
  • Die Completion-Vorschläge nach dem Schlüsselwort override enthalten auch Schnittstellen-Member, sodass Sie abstrakte oder als virtual static gekennzeichnete Member unkompliziert implementieren können.
Vorzeichenloser Rechtsverschiebungsoperator (>>>)

Vorzeichenloser Rechtsverschiebungsoperator (>>>)

Rider erkennt jetzt den umständlichen Code, den C#-Entwickler*innen bisher schreiben mussten, um eine vorzeichenlose Rechtsverschiebung von vorzeichenbehafteten Datentypen vorzunehmen, und schlägt stattdessen den in C# 11 eingeführten Operator >>> für die vorzeichenlose Rechtsverschiebung vor.

Pattern-Matching über Spans

Pattern-Matching über Spans

Wenn Sie Zeichen-Spans parsen, verwenden Sie wahrscheinlich häufig die Methode MemoryExtensions.SequenceEqual. C# 11 hat eine Abkürzung für diese Prüfung eingeführt. Sie können jetzt einfach Pattern-Matching mit is oder switch verwenden, um Spans mit Zeichenfolgenliteralen zu vergleichen.

Rider schlägt nun vor, statt mehrerer if-Anweisungen is oder switch zu verwenden.

ref-Felder und Schlüsselwort scoped

Ab C#11 können Sie ref-Felder in ref-Structs deklarieren. Rider unterstützt diese neue Syntaxregel, zeigt alle Compilerfehler und -warnungen an, schlägt das ref-Schlüsselwort bei der Code-Completion vor und erlaubt die Initialisierung solcher Felder in Konstruktoren.

Rider kennt auch das neue Schlüsselwort scoped, das Sie für Argumente und lokale Variablen verwenden können, die als ref oder ref struct spezifiziert sind. Die Unterstützung umfasst das korrekte Parsen der neuen Syntax, das Vorschlagen des Schlüsselworts scoped in der Code-Completion und die Beibehaltung von scoped beim Generieren von Methodenüberschreibungen. Auch die Kompatibilität von scoped-Modifikatoren wird überprüft, und bei abweichenden scoped-Angaben bei Überschreibungen, Schnittstellenimplementierungen und Delegatkonvertierungen werden Quick-Fixes vorgeschlagen.

C# 11 und .NET 7 haben auch Änderungen an den ref-bezogenen Sicherheitsregeln eingeführt. Die Änderungen regeln, welche Operationen für ref- und ref struct-Variablen verfügbar sind, um nach der Einführung von ref-Feldern die ref-Sicherheit in verwaltetem Code zu gewährleisten. Rider kennt die Änderungen und hilft Ihnen, Stellen in Ihrem Projekt zu finden, die aktualisiert und mit dem neuen Schlüsselwort scoped versehen werden müssen, um auf C# 11 oder .NET 7 migrieren zu können.

Sprachinjektionen

Dieser Build enthält eine Reihe von Verbesserungen bei der Sprachinjektion:

Wir haben Unterstützung für Sprachinjektionen hinzugefügt, die mit den Attributen [StringSyntax] (aus .NET 7) und [LanguageInjection] (aus JetBrains.Annotations) spezifiziert werden. Auch die Sprachangabe in einem Kommentar nach dem Muster // lang=<language_name> wird unterstützt.

Sprachinjektionen in interpolierten und verketteten Zeichenfolgen sind jetzt in jeder Sprache möglich – bisher stand nur SQL zur Wahl. Bitte beachten Sie, dass Syntaxfehler unterdrückt werden, wenn Sie interpolierte oder verkettete Zeichenfolgen mit beliebigen Ausdrücken verwenden. Sprachinjektionen in Raw-Zeichenfolgen gemäß C# 11 werden ebenfalls unterstützt.

Bei Raw-Zeichenfolgen wird jetzt eine Einrückungslinie angezeigt, die die Einrückung vom tatsächlichen Inhalt trennt.

Allgemeine C#-Updates

Randleistensymbol für globale Importe

Randleistensymbol für globale Importe

Ein neues Randleistensymbol informiert Sie über implizite Namensraum-Importe in C#- und Razor-Dateien.

Wenn Sie in der entsprechenden Zeile Alt+Enter drücken, sehen Sie die vollständige Liste der impliziten Importe sowie Informationen zur Quelldatei, in der sich die entsprechenden global using-Direktiven befinden. Wenn Sie einen bestimmten importierten Namensraum auswählen, kann Rider Sie zur Deklaration navigieren – dies gilt auch für <Using Include="Some.NameSpace" />-Tags in der .csproj-Projektdatei.

Randleistensymbol für globale Importe

Rider zeigt auch globale Importe aus _Imports.razor an und ermöglicht die Navigation zu den entsprechenden Importdefinitionen.

C#-Completion durch maschinelles Lernen unterstützt

C#-Completion durch maschinelles Lernen unterstützt

Um Ihren Entwicklungsprozess zu optimieren und zu beschleunigen, haben wir eine ML-gestützte Sortierung der Vorschläge in der C#-Completion eingeführt.

Um Ihre Erfahrung mit dieser Funktion weiter zu verbessern, können Sie unter Settings/Preferences | Editor | General | Code Completion | Machine Learning-assisted Completion zwei Optionen aktivieren:

  • Positionsänderungen im Completion-Popup markieren
  • Relevantesten Eintrag im Completion-Popup markieren
Completion von Formatstrings

Completion von Formatstrings

Mit der Einführung der Zahlentypen Int128 und UInt128 in .NET 7 haben wir die Formatangaben-Vorschläge in der Code-Completion aktualisiert.

Dabei haben wir auch die fehlende Unterstützung für die Typen DateOnly und TimeOnly aus .NET 6 sowie den in .NET 5 eingeführten Fließkommazahlentyp mit halber Genauigkeit Half nachgereicht.

Triviale Patterns in Ausdrücke umwandeln

Triviale Patterns in Ausdrücke umwandeln

Manchmal werden Pattern-Matching-Ausdrücke nach einem Refactoring zu trivialen rekursiven Patterns. In einem solchen Fall lohnt es sich möglicherweise nicht mehr, die rekursive Syntax zu verwenden. Daher bietet Rider jetzt die Möglichkeit, Patterns durch einfachere Ausdrücke zu ersetzen, wobei die ursprüngliche Pattern-Matching-Semantik beibehalten wird.

Hinweis auf void-Ausdruck in der Code-Completion

Hinweis auf void-Ausdruck in der Code-Completion

Manchmal kommen bei der Texteingabe nach einem Aufruf kaum sinnvolle Vorschläge. Ein Grund dafür kann sein, dass der Aufruf keinen Wert zurückgibt, da eine void-Methode aufgerufen wurde. Um dies zu erkennen, sind normalerweise einige IDE-Aktionen erforderlich (zurückgehen und zur Deklaration der Methode navigieren oder die Maus auf den Aufruf bewegen). Ab dieser Version erhalten Sie nach einem Aufruf, der void zurückgibt, durch den Hinweis „void“ eine unmittelbare Rückmeldung zum Rückgabetyp des Aufrufs. Wenn Sie diesen void-Vorschlag übernehmen, wird nach dem Aufruf ein Semikolon eingefügt, wenn dieses noch fehlt.

Webentwicklung

Blazor

Blazor

Rider 2022.3 führt Hot Reload für Blazor-Server-Apps ein. Wenn Sie Änderungen am Quellcode Ihrer Blazor-Server-App vornehmen, während die 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.

Begrüßungsbildschirm

Internet Information Services (IIS)

Um einen in der Community häufig geäußerten Wunsch zu erfüllen, haben wir eine neue Run-Konfiguration IIS Application eingeführt, mit der Sie klassische ASP.NET-Anwendungen auf einem IIS-Server ausführen und debuggen können. Neu ist auch die Unterstützung für den Befehlsnamen IIS in der launchSettings.json-Datei von ASP.NET-Core-Anwendungen.

Endpunkte

Endpunkte

Die Unterstützung für Endpunkte und der Endpoints-Viewer werden weiterhin kontinuierlich verbessert. Der Viewer erkennt jetzt auch Endpunkte in Routinggruppen bei Verwendung der Minimal-API von ASP.NET Core 7 und listet sie korrekt auf. Dadurch ist es über die bisherige Funktionalität hinaus möglich, die mit der MapGroup()-API deklarierten Endpunkte zu finden, zu ihnen zu navigieren und die Smart-Completion für sie zu nutzen.

Benutzer-Geheimwerte für .NET

Benutzer-Geheimwerte für .NET

In ASP.NET-Projekten ist jetzt die Aktion .NET User Secrets verfügbar.

JavaScript/TypeScript-Webprojekte

JavaScript/TypeScript-Webprojekte

Rider generiert jetzt automatisch eine Run-Konfiguration npm für JavaScript- und TypeScript-Webprojekte (.esproj), die in der Projektmappe (.sln) referenziert werden.

Code Vision für JavaScript und TypeScript

Code Vision für JavaScript und TypeScript

Code-Vision-Hinweise stehen jetzt auch für JavaScript und TypeScript zur Verfügung. Diese Hinweise helfen Ihnen, die Verwendung verschiedener Klassen, Methoden, Typ-Aliasnamen und Schnittstellen in Ihrem Code zu verfolgen.

CSS-Unterstützung

CSS-Unterstützung

Die IDE versteht jetzt die At-Regel @supports, die einen Anweisungsblock mit einer @supports-Bedingung verknüpft. This build also includes support for viewport units, range media queries, container queries, @layer (Cascade layers), and color modification functions.

Updates für Angular

Updates für Angular

Wir haben Unterstützung für die Typverengung in Angular-Templates hinzugefügt. Dadurch können präzisere Typinformationen und bessere Code-Completion-Vorschläge bereitgestellt werden.

Außerdem schließt Rider jetzt den Cache-Ordner .angular von der globalen Suche aus, um relevantere Ergebnisse bereitzustellen.

Game-Entwicklung

Unity-Unterstützung

Die Unity-Unterstützung in Rider erhält ein weiteres umfassendes Update mit Neuerungen, Optimierungen an vorhandenen Funktionen und einigen Fehlerkorrekturen.

Wir unterstützen jetzt das neue Unity-Paket Input System. Rider erkennt die Verwendung von Methoden als Ereignishandler für Eingaben und kategorisiert diese Methoden nicht mehr als ungenutzt. Auch Find Usages funktioniert bei diesen Methoden und zeigt an, wo sie im Code oder in der Datei .inputactions verwendet werden.

Das Laden von Game-Ressourcen zur Laufzeit ist eine großartige Möglichkeit, und Rider hilft Ihnen jetzt, in Resources.Load-Aufrufen den richtigen Pfad zu verwenden. Bei der Eingabe werden Completion-Vorschläge angezeigt, und unbekannte Ressourcen werden zur Warnung eingefärbt.

Rider bietet seit mehreren Releases Completion und Verifizierung für Tag-Namen, und ab Version 2022.3 wird auch die Methodengruppe GameObject.FindWithTag unterstützt. Sie erhalten Code-Completion während der Eingabe und werden gewarnt, wenn Sie ein Tag verwenden, das nicht im Projekt vorhanden ist.

Bei Unity-Projekten ist es sehr wichtig, dass die Metadateien mit den Dateien und Ordnern synchronisiert sind. Rider 2022.3 warnt Sie, wenn Sie versuchen, per Commit eine Metadatei für einen leeren Ordner in die Versionsverwaltung zu übernehmen. Noch nützlicher ist die Warnung, die Rider bei geöffnetem Unity-Editor ausgibt, wenn Sie ungespeicherte Szenen oder Assets haben. So können Sie sicherstellen, dass Ihre Commits alle Änderungen enthalten.

Natürlich gibt es noch zahlreiche weitere kleine Verbesserungen und Korrekturen. Wir haben die Ladezeit besonders großer Projekte verkürzt, und Sie erhalten eine Benachrichtigung, wenn Sie versuchen, eine schreibgeschützte Paketdatei zu bearbeiten. Eine Verbesserung in Find Usages ermöglicht die Verwendung bei Methoden in verschachtelten Prefabs und Arrays von Ereignishandlern.

Im Rahmen der DOTS-Unterstützung hat Rider gelernt, Klassen, die IBaker oder IAspect implementieren, nicht als ungenutzt zu markieren.

Sie können die Namensinspektionen bei serialisierten Feldern deaktivieren, damit diese wie normale Felder behandelt werden, und die Links zur Online-Dokumentation verweisen jetzt auf die richtigen Stellen.

Wir bedanken uns außerdem bei Unity für die Beisteuerung einer Korrektur für das Debugging von Playern auf Nintendo Switch.

Unterstützung für die Unreal Engine

Umbenennen mit CoreRedirects

Rider bietet bereits länger die Option, beim Umbenennen von Unreal-Klassen oder -Eigenschaften über das Rename-Refactoring CoreRedirects hinzuzufügen. Dies funktioniert jetzt auch in den folgenden Fällen:

  • Umbenennen von UFUNCTION()
  • Umbenennen von USTRUCT()
  • Umbenennen von UENUM

Bei der Durchführung des Rename-Refactoring schlägt Rider jetzt in allen diesen Fällen vor, CoreRedirects hinzuzufügen.

Wenn Sie dem Vorschlag zustimmen, wird die entsprechende .ini-Datei automatisch aktualisiert.

Jetzt ist es viel unwahrscheinlicher, dass sich beim Umbenennen Fehler in Ihr Game einschleichen!

Aktualisierte Code Vision für Blueprints

Rider 2022.3 führt eine neue Code-Vision-Metrik für Blueprints ein. Sie können jetzt unkompliziert überprüfen, wie viele Blueprints die Funktion BlueprintCallable verwenden und die Liste aller Verwendungen über das Code-Vision-Kontextmenü abrufen.

GUID-Generierung

Das Tool Generate GUID unterstützt jetzt das GUID-Format der Unreal Engine. Wann immer Sie schnell eine GUID generieren müssen, wählen Sie einfach Tools | Generate GUID... im Menü aus, und das bevorzugte Hexadezimalformat wird standardmäßig ausgewählt.

Autoimport

Die Autoimport-Vorschläge der Completion können Ihnen eine Menge Zeit sparen. Wird dabei jedoch nicht die korrekte #include-Direktive hinzugefügt, kann das resultierende Problem schwer zu finden sein. Wir haben intensiv daran gearbeitet, diese Funktion zu optimieren und sicherzustellen, dass keine unerwünschten Elemente aus den System-Headern für den Autoimport vorgeschlagen werden. Standardmäßig werden System-Header nicht vorgeschlagen, aber wenn Sie dies wünschen, können Sie sie unter Settings/Preferences | Languages & Frameworks | C++ | Unreal Engine aktivieren.

UnrealBuildTool-Protokoll

Wir haben die Darstellung der UnrealBuildTool-Protokolle verbessert. Damit Sie keine Warnungen oder Fehler in Ihren Projektkonfigurationen übersehen, zeigt das Fenster jetzt Zeitstempel an und bewahrt die Protokolle aus früheren UnrealBuildTool-Läufen auf.

Unterstützung für das native .uproject-Modell

Bei Unreal-Engine-basierten Projekten kann Rider sowohl mit .sln- als auch mit .uproject-Projekten umgehen. Die Unterstützung für das native .uproject-Modell wird kontinuierlich verbessert, um die Präzision und den Komfort zu steigern:

  • Rider 2022.3 berücksichtigt zusätzliche Speicherorte für Quellen, die in .project unter AdditionalRootDirectories und AdditionalPluginDirectories angegeben sind.
  • Unterstützt werden auch benutzerdefinierte Programme, die am Speicherort des Games abgelegt werden, und alle Projektdateien der Programme werden korrekt generiert.
  • Rider unterstützt jetzt plattformspezifische Module mit mehreren .Build.cs-Dateien.
  • Die Completion und Inspektionen in .uplugin- und .uproject-Dateien werden jetzt bei Verwendung des .uproject-Projektmodells unterstützt.
  • Run-Konfigurationen für C++-Programme werden jetzt automatisch generiert, wenn das .uproject-Modell verwendet wird.

An Unreal Editor anhängen

Wir haben die Aktion Attach to Unreal Editor für Unreal-Engine-Projekte implementiert. Dies erleichtert das Anhängen an einen Unreal-Engine-Prozess, ohne manuell nach dem richtigen Prozess suchen zu müssen. Derzeit ist das Anhängen nur an den Prozess möglich, mit dem UnrealLink verbunden ist – d. h. das im Unreal Editor ausgeführte Projekt sollte dem in Rider bearbeiteten Projekt entsprechen. Wir arbeiten daran, diesen Workflow in zukünftigen Versionen zu verbessern.

ARM64-Unterstützung Early Preview

Early Preview der ARM64-Unterstützung

Rider 2022.3 kann jetzt auf ARM64-basierten Windows- und Linux-Systemen ausgeführt werden. Alle grundlegenden Entwicklungsabläufe werden unterstützt; Sie können Ihre .NET-Anwendungen ausführen und debuggen und Unit-Tests durchführen. Wir arbeiten weiter an der Entwicklung und an Tests, um sicherzustellen, dass Rider reibungslos mit ARM64-Prozessoren funktioniert. Gleichzeitig möchten wir Sie auf die folgenden Einschränkungen hinweisen:

  • Derzeit gibt es keine Pläne, die Unreal-Engine-Entwicklung auf Windows ARM64 zu unterstützen, da Epic Games die Unreal Engine auf dieser Architektur nicht unterstützt.
  • Die Unreal-Engine-Unterstützung für Linux ARM64 befindet sich noch in der Entwicklung.
  • Für Visual-C++-Projekte unter Windows ARM64 ist eine grundlegende Unterstützung verfügbar, sie umfasst allerdings noch nicht das Debuggen von nativ erstellten Anwendungen. Die Fortschritte in diesem Bereich können Sie hier verfolgen.

Plugins

Arbeitsspeicher-Profiling auf macOS und Linux dotUltimate

dotMemory steht jetzt nicht nur unter Windows, sondern auch unter Linux und macOS für JetBrains Rider zur Verfügung. Im Run-Widget und im Menü Run | Switch profiler configuration sind zwei neue Profiling-Modi verfügbar: Memory (sampled allocations) und Memory (full allocations). Informationen zu den Unterschieden zwischen den beiden Modi finden Sie in der dotMemory-Hilfe.

Sie können den Profiler über das Run-Menü an einen laufenden Prozess anhängen und die Erfassung des Zeitdiagramms (Timeline Graph) in Echtzeit nachverfolgen. Wählen Sie ein Intervall, um die aus der eigenständigen dotMemory-Anwendung bekannte Ansicht Memory Allocations zu öffnen. Darin können Sie die allozierten Objekte und die Baumstruktur der Allokationsaufrufe für einen bestimmten Zeitraum analysieren.

Leider ist es in dieser Version noch nicht möglich, Speicher-Snapshots zu erfassen.

Dynamische Programmanalyse

Dynamische Programmanalyse

Die dynamische Programmanalyse (DPA) verfügt über neue Inspektionen, die verschiedene Probleme im Zusammenhang mit der Datenbanknutzung finden können:

  • Lange Befehlsausführungszeiten
  • Zu viele Datenbankverbindungen
  • Zu viele gleichzeitig ausgeführte Datenbankbefehle
  • Befehle, die zu viele Datensätze zurückgeben

Die neuen Inspektionen sind für alle Anwendungen verfügbar, die Entity Framework Core und einen .NET-Datenprovider für SQL Server verwenden.

dotCover dotUltimate

Dynamische Programmanalyse

Einfachere Navigation zu Tests

Die neue Kontextaktion Show Covering Tests in den dotCover-Kontextmenüs ist sowohl im Code-Editor als auch im Fenster Unit Test Coverage verfügbar. Diese Aktion zeigt ein Popup-Fenster an, in dem alle zur Coverage gehörenden Tests aufgeführt sind. In diesem Popup können Sie auch eine neue Coverage-Sitzung starten.

Schnellere Schattenkopien

dotCover kopiert ab sofort nur noch die Assemblies und Symboldateien, die für das Continuous Testing in JetBrains Rider benötigt werden. Dadurch wird die Gesamtperformance von dotCover insbesondere bei großen Projekten verbessert, da nicht mehr das gesamte Arbeitsverzeichnis kopiert werden muss. Bei Bedarf können Sie den Schattenkopien-Filter in den dotCover-Einstellungen anpassen.

Verbesserte Unity-Unterstützung

Die Coverage-Analyse von Unity-Tests erforderte bisher den Neustart von Unity mit aktivierter Coverage-Unterstützung. Ab diesem Release müssen Sie Unity nicht mehr neu starten – die Test-Coverage wird standardmäßig unterstützt.

NuGet-Unterstützung

CPM (Central Package Management, d. h. zentrale Paketverwaltung mithilfe der Datei Directory.Packages.props) ist eine in Entwicklung befindliche Funktion des .NET-Technologiestacks, die in Zukunft – eine weitere Entwicklung vorausgesetzt – die Verwaltung von Projektmappen erleichtern sollte. Mit der Einführung von CPM in Rider erhalten Entwickler*innen mehr Kontrolle über ihre Abhängigkeiten.

Weitere Informationen zur zentralen Paketverwaltung, inklusive Tipps und Vorbehalte, finden Sie in diesem Blogartikel.

Jede Verwendung eines quelloffenen NuGet-Pakets ist mit dem Risiko verbunden, dass Sicherheitslücken in Ihr Projekt eingeschleppt werden. Um dieses Risiko zu minimieren, bietet Rider jetzt eine Erkennung von Abhängigkeiten an, die von Sicherheitslücken betroffen sind. Die IDE warnt Sie über Benachrichtigungs-Popups vor anfälligen Abhängigkeiten, die sich aus der Verwendung von NuGet-Paketen ergeben. Sie können die Meldungen im Bereich Security der Problems-Ansicht weiter untersuchen. Informationen zu anfälligen Abhängigkeiten der in der Projektmappe verwendeten Pakete finden Sie auch im Fenster NuGet Package Management, wenn Sie ein bestimmtes Paket auswählen.

Wir haben auch das Scrollen in der Paketliste des NuGet-Toolfensters verbessert.

F#-Unterstützung

Rider 2022.3 führt die Unterstützung von F# 7 ein, stellt verschiedene Korrekturen für kleinere Probleme bereit und bietet einige Verbesserungen für den Entwicklungsalltag.

Verbesserte Unterstützung für XML-Dokumentationen

Verbesserte Unterstützung für XML-Dokumentationen

Durch die Eingabe von < innerhalb eines Kommentars wird jetzt eine Dokumentationsvorlage eingefügt. Zudem erleichtern Syntaxhervorhebung und Code-Completion die Bearbeitung von Dokumentationskommentaren.

Code-Completion für record

Code-Completion für record

Eine neue Code-Completion-Regel vereinfacht die Eingabe von record-Ausdrücken, indem sie Felder des abgeleiteten record-Typs hervorhebt, bereits verwendete Felder ausblendet und verschiedene Fälle behebt, in denen bisher keine Vorschläge angezeigt wurden.

Signaturdateien

Signaturdateien

Mit den neuen Quick-Fixes Update parameter name und Update record field können Sie Signaturdateien aktualisieren, um ihre Verwendung bei Codeänderungen zu vereinfachen. A huge thanks goes to Florian Verdonck for implementing them!

Dies waren nur die Highlights der verbesserten F#-Unterstützung. You can find the full list of F# features included in the 2022.3 release here.

Unterstützung für Datenbanken

Hier sind einige besonders interessante Neuerungen in Rider 2022.3 für die Arbeit mit Datenbanken:

  • Schnellfilter – Sie können bei Verwendung der Schnellsuche Ergebnisse filtern und die nicht mit dem Filter übereinstimmenden Objekte ausblenden.
  • Schema-Filterung mit regulären Ausdrücken – Sie können jetzt Datenbanken oder Schemata mit regulären Ausdrücken zur Introspektion auswählen.
  • Formatierung von Datums- und Uhrzeitfeldern – Sie können jetzt die Darstellung von Datums- und Uhrzeittypen im Dateneditor anpassen.
  • Mehrfaches Bearbeiten im Modify-Fenster – Sie haben jetzt die Möglichkeit, mehrere Objekte gleichzeitig zu bearbeiten.

Erfahren Sie mehr: Das ist neu in DataGrip 2022.3

Verschiedenes

IL-Ansicht

IL-Ansicht

Das IL Viewer-Toolfenster von Rider kann jetzt Code in verschiedene Ebenen von C#-Sprachkonstrukten dekompilieren. Es stehen zwei C#-Ebenen zur Verfügung: high-level, wobei bestimmte Syntaxkonstrukte mithilfe der neuesten Sprachmerkmale vereinfacht werden, und low-level für den Fall, dass Sie erfahren möchten, wie diese Syntaxkonstrukte ohne „syntaktischen Zucker“ aussehen.

Code-Hervorhebung

Code-Hervorhebung

Die Syntaxhervorhebung und die Wellenlinien wurden in Rider 2022.3 überarbeitet. Aufgrund von Abweichungen in der internen Logik kam es bisher zu einem Konflikt zwischen Rider und der Codestilanalyse von Microsoft Roslyn. Dies führte zu überlappenden Syntaxhervorhebungen, der Darstellung derselben Hervorhebung an verschiedenen Stellen oder doppelten Wellenlinien. Die Unterschiede in der Logik, die den meisten dieser Fälle zugrunde lagen, sind nun behoben, und bei den seltenen Ausnahmen werden jetzt Fehler mit klaren Vorschlägen zur Lösung des Konflikts angezeigt.

Außerdem zeigt Rider jetzt bei Inspektionen, die von Roslyn-Analyzern erstellt wurden, die Roslyn Analyzer ID und die URL-Referenz in einem Schnelldokumentations-Tooltip an.

C++-Formatierung

C++-Formatierung

Wir haben die Möglichkeit eingeführt, statt der Verwendung des Rider-Formatierungsmoduls eine clang-format-Binärdatei direkt auszuführen. Dies gewährleistet eine vollständige Kompatibilität der Formatierung mit dem Industriestandard und ermöglicht eine höhere Performance und eine größere Auswahl an Formatierungsoptionen. Um zwischen dem integrierten und einem externen clang-format umzuschalten, wählen Sie unter Settings | Editor | Code Style | C++ die Option Clang-format aus.

Debugger

Wir haben die Performance des Debuggers bei deaktivierter Option Allow property evaluations and implicit function calls erheblich verbessert. Jetzt können im nebeneffektfreien Modus viel mehr Ausdrücke in .NET-, .NET-Framework- und .NET-Core-Projekten ausgewertet werden.

Unit-Tests

Wir haben die Baumstruktur des Unit-Test-Explorers auf „lazy“ umgestellt und dadurch die Geschwindigkeit erhöht und den Speicherbedarf verringert. Zuvor wurden alle Knoten automatisch gemeinsam mit der Unit-Test-Baumstruktur erstellt. Dies führte zu einem hohen Speicherverbrauch und einer stockenden Navigation. Jetzt werden nur noch die Knoten der ausgeklappten Zweige angelegt, wodurch sich die Leistung spürbar verbessert.

MSBuild

  • Für MSBuilds ab .NET Core 17 haben wir die standardmäßige serverseitige Garbage-Collection aktiviert.
  • Wenn der 32-Bit-Version von MSBuild der Arbeitsspeicher ausgeht, kann Rider dies erkennen und zur 64-Bit-Version von Visual Studio wechseln.

Performance

Die projektmappenweite Analyse und der Befehl Find usages wurden refaktoriert. Unseren internen Tests zufolge sind sie dadurch um durchschnittlich 20–40% schneller geworden.