63 Stimmen

Ungenutzte Ressourcen in einer .NET-Lösung finden

Wie finden Sie ungenutzte Symbole, Bilder und Zeichenketten in .resx-Dateien, die möglicherweise "verwaist" sind und nicht mehr benötigt werden?

56voto

hultqvist Punkte 16087

Kürzlich ResXManager 1.0.0.41 eine Funktion hinzugefügt, um die Anzahl der Verweise auf eine String-Ressource anzuzeigen.

Screenshot showing the new reference column

21voto

RandomEngy Punkte 14379

Ich konnte keine bestehende Lösung finden, die nach String-Ressourcenverweisen in XAML-Dateien sucht und unbenutzte im Batch-Verfahren entfernt.

Also habe ich dies geschrieben: https://github.com/Microsoft/RESX-Unused-Finder

RESX Unused Finder screenshot

Er durchsucht ein Projektverzeichnis nach Verweisen auf String-Ressourcen und zeigt dann eine Liste derjenigen an, für die er keine Übereinstimmung finden konnte. Sie können eine Vorlage angeben, nach der gesucht werden soll, damit Verweise in XAML-Dateien gefunden werden können.

11voto

Alex from Jitbit Punkte 44084

Ich habe eine kostenlose Open-Source-VS-Erweiterung entwickelt, die nach unbenutzten Bildern in einem Projekt sucht, und gerade die erste Version veröffentlicht: https://marketplace.visualstudio.com/items?itemName=Jitbit1.VSUnusedImagesFinder

8voto

David Schmitt Punkte 56455

Dies ist keine Information, die ein Algorithmus zuverlässig berechnen kann. Das geprüfte Programm könnte eine Liste aller Ressourcen abrufen und etwas mit ihnen machen, z. B. den Benutzer aus mehreren Symbolen auswählen lassen.

Am besten ist es wahrscheinlich, nach allen Verweisen auf die API Ihrer Wahl für den Ressourcenzugriff zu suchen und diese manuell zu überprüfen. verwenden grep / sed können Sie die Anzahl der manuell zu prüfenden Websites verringern, indem Sie alle "einfachen" Websites, die eine einfache Zeichenfolge verwenden, bearbeiten.

8voto

Uwe Keim Punkte 38139

Da ich keine Möglichkeit fand, eine einfach y schnell Lösung, aber ich habe zumindest eine Lösung gefunden, die es mir ermöglicht, das gewünschte Ergebnis zu erzielen, auch wenn es einige Zeit dauert (ideal für einen faulen Sonntagnachmittag).

Die Lösung umfasst Visual Studio .NET 2010 und ReSharper (ich verwende Version 7.1) und geht wie folgt.

Schritt-für-Schritt-Lösung

1.) Klicken Sie mit der rechten Maustaste auf Ihre primäre RESX-Datei in VS.NET und wählen Sie im Kontextmenü "Verwendungen suchen":

enter image description here

Dadurch wird das Fenster "Ergebnisse suchen" von ReSharper geöffnet.

2.) Doppelklicken Sie auf jedes Vorkommen im Lösungsfenster:

enter image description here

Dadurch wird das Quellcode-Fenster mit der Ressource geöffnet.

3.) Benennen Sie diese Ressource aus dem Quellcodefenster heraus um:

enter image description here

Es öffnet sich der ReSharper-Dialog "Ressource umbenennen".

4.) Geben Sie der Ressource einen neuen Namen mit einem eindeutige Vorsilbe . In meinem Beispiel ist dies "TaskDialog_":

enter image description here

Es wird sowohl die Ressource als auch die automatisch generierte C#-Wrapper/Access-Klasse umbenannt.

5.) Wiederholen Sie die obigen Schritte 2, 3 und 4 für alle Ressourcen im Fenster "Verwendungen".

6.) Öffnen Sie die RESX-Datei im Ressourcen-Editor von Visual Studio und wählen Sie alle Dateien ohne das Präfix aus:

enter image description here

7.) Klicken Sie nun auf die Schaltfläche "Ressource entfernen" am oberen Rand des Fensters oder drücken Sie einfach die Del Schlüssel:

enter image description here

Sie haben nun eine RESX-Datei, in der nur die tatsächlich verwendeten Ressourcen enthalten sind.

8.) (Optional) Wenn Sie Ressourcen in mehreren Sprachen haben (z. B. "Resources.de.resx" für Deutsch), wiederholen Sie die Schritte 7 und 8 auch für diese RESX-Dateien.

Warnung

Bitte beachten Sie, dass dies nicht funktioniert, wenn Sie auf Ihre Strings anders als über die stark typisierte, automatisch generierte C#-Klasse Resources .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X