ReSharper bietet eine Reihe von Funktionen an, die im Gegensatz zu einzelnen Codehelfern am besten auf gesamte Projekte oder Lösungen angewendet werden.
Diese Funktionen umfassen ReSharper Build, das die Kompilierung Ihrer Projekte durch MSBuild optimiert; Diagramme, die Abhängigkeiten zwischen Projekten oder Typen anzeigen sowie eine Methode, um den Code zu finden, der diese Abhängigkeiten implementiert; Refaktorierungen, um Referenzen in den Projekten Ihrer Lösung zu optimieren und viele weitere Funktionalitäten.
ReSharper Build ist ein inkrementelles Out-of-Process-Build-Tool, das von mehreren Prozessen Gebrauch machen kann, den Projektbuildstatus visualisiert und für große Lösungen mit vielen Abhängigkeiten optimiert ist.
ReSharper-Build ersetzt das Build-Management von Visual Studio durch ein System, das Heuristiken einsetzt, um nur solche Projekte zu kompilieren, die eine Aktualisierung benötigen. Zu beachten ist hierbei, dass MSBuild nicht ersetzt wird – die Builds Ihrer Projekte werden weiterhin auf dem normalen Weg erstellt.
ReSharper bietet neue Methoden, um Code in Visual Studio mit Laufzeitkonfigurationen auszuführen. Es gibt drei Arten von Laufzeitkonfigurationen:
Sie können statische Methoden auch ausführen, ohne eine permanente Laufzeitkonfiguration zu erstellen: Drücken Sie einfach Alt+Enter und verwenden Sie das Untermenü Debug in der Aktionsliste.
Um die aktive Konfiguration, bei der es sich standardmäßig um das Startprojekt von Visual Studio handelt, auszuführen oder zu debuggen, drücken Sie Strg+F5 bzw. F5. Um Laufzeitkonfigurationen zu verwalten, drücken Sie Strg+Umschalt+Alt+R oder wählen Sie im Menü ReSharper | Tools | Run Configurations aus.
ReSharper gibt Ihnen einen Überblick über die Projektabhängigkeiten in Ihrer Lösung durch eine visuelle Darstellung der Lösungsarchitektur. Sie können jederzeit die Architekturansicht öffnen (ReSharper | Architecture | Show Project Dependency Diagram) und die Projektabhängigkeiten überprüfen, ohne irgendetwas zu kompilieren.
Sie können direkt in dieser Ansicht Refaktorierungen (wie zum Beispiel Adjust Namespaces oder Remove Unused References), Navigationsaktionen und viele weitere nützliche Befehle ausführen. Außerdem können Sie einen Abhängigkeits-Snapshot speichern und diesen später mit dem aktuellen Status Ihrer Lösung vergleichen.
ReSharper kann die Abhängigkeiten zwischen den Typen in Ihrer Lösung visuell darstellen. Dem Typabhängigkeitsdiagramm können Sie eine beliebige Anzahl an Typen aus unterschiedlichen Projekten oder kompilierten Assemblies hinzufügen und verschiedene Arten von Abhängigkeiten zwischen ihnen visualisieren. Abgesehen vom Hauptmenübefehl ReSharper | Architecture | Show Type Dependency Diagram gibt es zahlreiche weitere Möglichkeiten, um Typen zum Diagramm hinzuzufügen: So können Sie alle Typen aus den Fenstern Find Results oder Hierarchy hinzufügen, und ebenso aus dem Projektabhängigkeitsdiagramm oder den Popups, die Navigationsergebnisse anzeigen. Sie können auch Typen aus anderen Toolfenstern ziehen und ablegen und weitere Möglichkeiten nutzen.
Ähnlich wie beim Projektabhängigkeitsdiagramm sind viele Navigationsaktionen direkt vom Typabhängigkeitsdiagramm aus verfügbar, wie zum Beispiel die Refaktorierung Move to Folder, die hier mittels Ziehen und Ablegen verwendet werden kann.
Mit ReSharper können Sie auch Abhängigkeiten zwischen kompilierten Assemblies untersuchen. Sie können ein Diagramm für eine beliebige Anzahl von Assemblies erstellen, um die gegenseitigen Verweise zwischen diesen Assemblies zu untersuchen.
Sie können das Diagramm im Assembly Explorer für ausgewählte Assemblies aufrufen und die Verbindungen erkunden, die zwischen den Assemblies durch Verweise hergestellt werden.
Mit ReSharper können Sie im NuGet-Paketkatalog nach Typen oder Namespaces suchen und die gefundenen Pakete installieren – und all das, ohne Visual Studio zu verlassen. Sie können all dies im NuGet-Browserfenster erledigen (ReSharper | Windows | NuGet Browser).
Sie können die Suche sogar direkt vom Editor aus starten: Drücken Sie Alt+Enter auf einem beliebigen nicht aufgelösten Typ oder Namespace und wählen Sie Find on nuget.org aus, um ein fehlendes NuGet-Paket zu finden und zu installieren.
Einige Funktionen zur Coderefaktorierung können auf ein Projekt, einen Lösungsordner oder die gesamte Lösung angewendet werden.
Zum Beispiel hilft Ihnen die Refaktorierung Adjust Namespaces beim Synchronisieren von Namespaces zur Ordnerstruktur innerhalb eines beliebigen Geltungsbereiches – bis hin zu Ihrer gesamten Lösung. Das heißt, wenn in einer bestimmten Codedatei ein Namespace nicht mit der Stelle der Datei in der Projektstruktur übereinstimmt, dann wird der Namespace umbenannt, um dem Dateispeicherort zu entsprechen. Alle Using-Anweisungen, die auf die geänderten Namespaces verweisen, werden entsprechend aktualisiert.
Eine andere Projektrefaktorierung, Remove Unused References, hilft Ihnen beim Erkennen und Entfernen überflüssiger Verweise aus Ihren Projekten, um Ihre Lösung zu bereinigen.
Es gibt auch eine Möglichkeit, Verweise während der Laufzeit als verwendet zu markieren, was wichtig ist, wenn Sie Frameworks für Abhängigkeitsinjektionen verwenden.
Indem Sie alle Verweise markieren, die implizit geladen werden, können Sie gefahrlos die ReSharper-Befehle Optimize References und Remove Unused References verwenden, ohne Verweise zu zerstören, die bei der Laufzeit erforderlich sind.
Find Dependent Code findet Code, der von einem ausgewählten Projekt abhängt. Find Referenced Code funktioniert umgekehrt: Es findet sämtliche ausgehenden Verweise im entsprechenden Geltungsbereich, der eng (z. B. eine Methode) oder breit (ein ganzes Projekt) gefasst sein kann.
Die Suchergebnisse beider Funktionen werden im Fenster Find Results angezeigt. Wenn nur eine einzige Verwendung gefunden wurde, springt der Textcursor direkt zur entsprechenden Stelle.
Um abhängigen oder referenzierten Code zu finden, wählen Sie einen Knoten im Lösungs-Explorer aus oder positionieren Sie den Textcursor auf einen Container im Texteditor und wählen Sie ReSharper | Find | Find Code Dependent on Module oder ReSharper | Find | Find Symbols External to Scope.
In diesem einfachen Fenster können Sie kompilierte Assemblies öffnen und in diesen genauso navigieren und suchen, als ob Sie mit Quellcode arbeiten würden. Wenn Sie einen Assemblyknoten erweitern, werden Namespaces innerhalb der Assembly aufgelistet, die noch weiter zu Typen und Typmembern sowie Assemblyverweisen erweitert werden können.
Wenn eine bestimmte Assembly für Sie von besonderem Interesse ist, dann wird der Assembly Explorer Ihnen helfen, diese zu einem Visual Studio-Projekt zu exportieren, so dass Sie den Quellcode durchsuchen, kompilieren, ausführen und debuggen können.
Im Solution Explorer greift ReSharper bei der Verwaltung von Knoten Visual Studio unter die Arme. Wenn Sie im Solution Explorer ein Projekt oder einen anderen übergeordneten Knoten reduzieren, dann wird Visual Studio dessen untergeordnete Knoten nicht reduzieren. Wenn Sie also später das Projekt erweitern, werden Sie feststellen, dass einige Knoten in der Struktur erweitert sind.
Mit ReSharper können Sie einfach auf einen Knoten im Solution Explorer rechtsklicken und Collapse All im Kontextmenü auswählen. Der ausgewählte Knoten wird zusammen mit all seinen untergeordneten Knoten reduziert.
Collapse All arbeitet perfekt mit einer anderen praktischen Funktion von ReSharper zusammen: Locate in Solution Explorer. Zum Beispiel können Sie als ersten Schritt das gesamte Projekt reduzieren und anschließend mithilfe von Locate in Solution Explorer diejenigen Knoten erweitern, die Sie wirklich brauchen.
Diese praktische Navigationsfunktion, auf die Sie mit Umschalt+Alt+L zugreifen können, hebt für eine Datei, die aktuell im Texteditor geöffnet ist, den zugehörigen Knoten im Solution Explorer hervor. Dabei scrollt ReSharper gegebenenfalls den Solution Explorer, um den hervorgehobenen Knoten sichtbar zu machen.
Das ist besonders nützlich, wenn Sie eine riesige Lösung mit Zehntausenden Dateien oder eine begrenzte Bildschirmfläche haben, die Sie zwingt, das Fenster des Solution Explorer auf das Minimum zu verkleinern. Zusätzlich passt diese Funktion hervorragend zu Collapse All in Solution Explorer.
ReSharper-Einstellungen werden mithilfe eines verteilten Speichermodells gesichert. Dadurch kann jede Einstellung oder Einstellungsgruppe separat gespeichert werden, und bei der Ausführung werden alle kombiniert und angewendet.
Zu den Vorteilen dieses Modells gehören unterschiedliche Einstellungen für unterschiedliche Lösungen, die gemeinsame Nutzung von Einstellungen, das Importieren und Exportieren von Einstellungen und vieles mehr. Das kann besonders hilfreich bei der gemeinsamen Nutzung von Einstellungen sein, die innerhalb des Teams identisch sein sollen: Codestil-Einstellungen, Codevorlagen oder Strukturelle Such- und Ersetzungsmuster.
Es gibt standardmäßig drei Einstellungsebenen: für alle Lösungen auf dem lokalen Computer, für die aktuelle Lösung und für gemeinsam genutzte Lösungseinstellungen. Sie können ganz einfach neue Ebenen erstellen, verwalten und freigeben, z. B. für globale unternehmensweite Einstellungen.
Alle auf dieser Seite angegebenen Tastenkürzel sind in der standardmäßigen "Visual Studio"-Tastaturbelegung von ReSharper verfügbar. Weitere Informationen zu den beiden Tastaturbelegungen von ReSharper finden Sie in der ReSharper-Dokumentation.