Dateischachtelung im Projektmappen-Explorer

Der „Lösungs-Explorer“ schachtelt verwandte Dateien zur besseren Organisation und um die Auffindbarkeit zu erleichtern. Wenn Sie z. B. einem Projekt ein Windows Forms-Formular hinzufügen, wird die Codedatei für das Formular im Lösungsexplorer unter dem Formular geschachtelt. In .NET Core-Projekten (und .NET 5 und höher) können Dateischachtelungen einen Schritt weiter ausgeführt werden. Sie können zwischen den Dateischachtelungseinstellungen Aus, Standard und Web wählen. Sie können auch anpassen, wie Dateien geschachtelt werden , oder lösungsspezifische und projektspezifische Einstellungen erstellen.

Hinweis

In Visual Studio 2022, Version 17.2 und früher, wurde dieses Feature nur für ASP.NET Core-Projekte unterstützt. In Version 17.3 und höher unterstützen alle auf .NET ausgerichteten Projekte die Dateischachtelung.

Optionen für die Dateischachtelung

Ein Screenshot zeigt die Schaltfläche zum Ein- und Ausschalten der Dateiverschachtelung.

Schaltfläche für die Aktivierung/Deaktivierung der Dateischachtelung

Die verfügbaren Optionen für die nicht anpassbare Dateischachtelung sind folgende:

  • Aus: Mit dieser Option erhalten Sie eine flache Liste von Dateien ohne jegliche Verschachtelung.

  • Standard: Mit dieser Option erhalten Sie das Standardverhalten für die Dateiverschachtelung im Lösungs-Explorer. Wenn für einen bestimmten Projekttyp keine Einstellungen vorhanden sind, werden keine Dateien im Projekt geschachtelt. Wenn Einstellungen vorhanden sind (z.B. für ein Webprojekt), wird die Verschachtelung angewendet.

  • Web: Diese Option wendet das Verhalten des Webdateischachtelungsverhaltens auf alle Projekte in der aktuellen Lösung an. Es hat zahlreiche Regeln, und wir empfehlen Ihnen, es auszuchecken und uns mitzuteilen, was Sie denken. Der folgende Screenshot zeigt nur ein paar Beispiele für das Dateischachtelungsverhalten, das Sie mit dieser Option erhalten:

    Screenshot mit Dateischachtelung in Projektmappen-Explorer.

    Dateischachtelung im Projektmappen-Explorer

Anpassen der Dateischachtelung

Wenn Ihnen die Ergebnisse der Standardeinstellungen nicht gefallen, können Sie Ihre eigenen benutzerdefinierten Schachtelungseinstellungen erstellen, die den Projektmappen-Explorer anweisen, wie Dateien geschachtelt werden sollen. Sie können beliebig viele benutzerdefinierte Dateischachtelungseinstellungen hinzufügen und zwischen ihnen wechseln. Zum Erstellen einer neuen benutzerdefinierten Einstellung können Sie mit einer leeren Datei beginnen oder die Standardeinstellungen als Ausgangspunkt verwenden:

Screenshot, der das Dialogfeld

Es wird empfohlen , Die Standardeinstellungen als Ausgangspunkt zu verwenden, da es einfacher ist, mit bereits funktionsfähigen Funktionen zu arbeiten. Wenn Sie die Standardeinstellungen als Ausgangspunkt verwenden, sieht die .filenesting.json Datei ähnlich der folgenden Datei aus:

Wenn Ihnen die Ergebnisse der Standardeinstellungen nicht gefallen, können Sie Ihre eigenen benutzerdefinierten Schachtelungseinstellungen erstellen, die den Projektmappen-Explorer anweisen, wie Dateien geschachtelt werden sollen. Sie können beliebig viele benutzerdefinierte Dateischachtelungseinstellungen hinzufügen und zwischen ihnen wechseln. Um eine neue benutzerdefinierte Einstellung zu erstellen, können Sie mit einer leeren Datei beginnen oder die Webeinstellungen als Ausgangspunkt verwenden:

Hinzufügen von benutzerdefinierten Dateischachtelungsregeln

Es wird empfohlen, Webeinstellungen als Ausgangspunkt zu verwenden, da es einfacher ist, mit etwas zu arbeiten, das bereits funktioniert. Wenn Sie die Webeinstellungen als Ausgangspunkt verwenden, sieht die .filenesting.json Datei ähnlich der folgenden Datei aus:

Ein Screenshot zeigt die Verschachtelung von Anbietern in einer angepassten Einstellungsdatei.

Verwenden vorhandener Dateischachtelungsregeln als Grundlage für benutzerdefinierte Einstellungen

Konzentrieren wir uns auf den Knoten dependentFileProviders und seine untergeordneten Knoten. Jeder untergeordnete Knoten ist ein Regeltyp, den Visual Studio zum Schachteln von Dateien verwenden kann. Beispielsweise ist der gleiche Dateiname, aber mit einer anderen Erweiterung eine Art Regel. Die verfügbaren Regeln sind:

  • extensionToExtension: Verwenden Sie diese Art von Regel, um file.js unter file.ts zu verschachteln

  • fileSuffixToExtension: Verwenden Sie diesen Regeltyp, um file-vsdoc.js unter file.js zu verschachteln.

  • addedExtension: Verwenden Sie diesen Regeltyp, um file.html.css unter file.html zu schachteln

  • pathSegment: Verwenden Sie diesen Regeltyp zum Schachteln von jquery.min.js unter jquery.js

  • allExtensions: Verwenden Sie diesen Regeltyp zum Schachteln von Dateien.* unter file.js

  • fileToFile: Verwenden Sie diesen Regeltyp, um bower.json unter .bowerrc zu verschachteln.

Der extensionToExtension-Anbieter

Mit diesem Anbieter können Sie Dateischachtelungsregeln mithilfe bestimmter Dateierweiterungen definieren. Betrachten Sie das folgenden Beispiel:

Ein Screenshot zeigt eine extentionToExtension Regel.

Screenshot, der die Auswirkung der ExtensionToExtension-Regel zeigt.

extentionToExtension-Beispielregeln

extentionToExtension-Beispieleffekt

  • file.js wird aufgrund der ersten ExtensionToExtension-Regel unter file.ts geschachtelt.

  • file.js ist nicht unter file.tsx geschachtelt, weil .ts vor .tsx in den Regeln vorkommt und es nur ein übergeordnetes Element geben kann.

  • light.css ist unter light.sass aufgrund der zweiten extensionToExtension-Regel geschachtelt.

  • home.html wird unter home.md geschachtelt, weil die dritte ExtensionToExtension-Regel dies erfordert.

Der FileSuffixToExtension-Anbieter

Dieser Anbieter funktioniert genau wie der ExtensionToExtension-Anbieter , wobei der einzige Unterschied besteht, dass die Regel das Suffix der Datei anstelle der Erweiterung betrachtet. Betrachten Sie das folgenden Beispiel:

Screenshot einer FileSuffixToExtension-Regel.

Screenshot, der den Effekt der FileSuffixToExtension-Regel zeigt.

fileSuffixToExtension-Beispielregeln

fileSuffixToExtension-Beispieleffekt

  • portal-vsdoc.js wird aufgrund der FileSuffixToExtension-Regel unter portal.js geschachtelt.

  • Jeder andere Aspekt der Regel funktioniert genauso wie extensionToExtension.

Der addedExtension-Anbieter

Dieser Anbieter schachtelt Dateien mit einer zusätzlichen Erweiterung unter der Datei ohne zusätzliche Erweiterung. Die zusätzliche Erweiterung kann nur am Ende des vollständigen Dateinamens angezeigt werden.

Betrachten Sie das folgenden Beispiel:

Ein Screenshot zeigt die addedextension Regel.

Screenshot, der die Auswirkung der hinzugefügtenExtension-Regel zeigt.

addedExtension-Beispielregeln

addedExtension-Beispieleffekt

  • file.html.css wird aufgrund der addedExtension-Regel unter file.html geschachtelt.

Hinweis

Sie geben keine Dateierweiterungen für die addedExtension Regel an. Sie gilt automatisch für alle Dateierweiterungen. Das heißt, jede Datei mit demselben Namen und derselben Erweiterung wie eine andere Datei sowie eine zusätzliche Erweiterung am Ende wird unter der anderen Datei geschachtelt. Sie können die Auswirkung dieses Anbieters nicht auf bestimmte Dateierweiterungen beschränken.

Der PathSegment-Anbieter

Dieser Anbieter schachtelt Dateien mit einer zusätzlichen Erweiterung unter einer Datei ohne zusätzliche Erweiterung. Die zusätzliche Erweiterung kann nur in der Mitte des vollständigen Dateinamens angezeigt werden.

Betrachten Sie das folgenden Beispiel:

Screenshot, das eine pathSegment-Regel zeigt.

Screenshot, der die Auswirkung der PathSegment-Regel zeigt.

pathSegment-Beispielregeln

PathSegment-Beispieleffekt

  • jquery.min.js ist aufgrund der PathSegment-Regel unter jquery.js geschachtelt.

Hinweis

  • Wenn Sie keine bestimmten Dateierweiterungen für die pathSegment Regel angeben, gilt sie für alle Dateierweiterungen. Das heißt, jede Datei mit demselben Namen und derselben Erweiterung wie eine andere Datei sowie eine zusätzliche Erweiterung in der Mitte wird unter der anderen Datei geschachtelt.

  • Sie können die Auswirkung der pathSegment Regel auf bestimmte Dateierweiterungen beschränken, indem Sie sie wie folgt angeben:

    "pathSegment": {
        "add": {
          ".*": [
            ".js",
            ".css",
            ".html",
            ".htm"
          ]
        }
    }
    

Der allExtensions-Anbieter

Mit diesem Anbieter können Sie Dateischachtelungsregeln für Dateien mit jeder Erweiterung, aber mit demselben Basisdateinamen definieren. Betrachten Sie das folgenden Beispiel:

Screenshot, der die allExtensions-Regel zeigt.

Screenshot, der die Auswirkung der AllExtensions-Regel zeigt.

allExtensions-Beispielregeln

allExtensions-Beispieleffekt

  • Template.cs und Template.doc werden aufgrund der AllExtensions-Regel unter Template.tt geschachtelt.

Der FileToFile-Anbieter

Mit diesem Anbieter können Sie Dateischachtelungsregeln basierend auf vollständigen Dateinamen definieren. Betrachten Sie das folgenden Beispiel:

Screenshot einer FileToFile-Regel.

Screenshot, der die Auswirkung der FileToFile-Regel zeigt.

fileToFile-Beispielregeln

fileToFile-Beispieleffekt

  • file.npmrc ist aufgrund der FileToFile-Regel unter package.json geschachtelt.

Regelreihenfolge

Die Sortierung ist in jedem Teil Ihrer benutzerdefinierten Einstellungsdatei wichtig. Sie können die Reihenfolge ändern, in der Regeln ausgeführt werden, indem Sie sie innerhalb des abhängigEnFileProvider-Knotens nach oben oder unten verschieben. Wenn Sie beispielsweise eine Regel haben, die file.js zum übergeordneten Element von file.ts macht, und eine andere Regel haben, die file.coffee zum übergeordneten Element von file.ts macht, bestimmt die Reihenfolge, in der sie in der Datei angezeigt werden, das Schachtelungsverhalten, wenn alle drei Dateien vorhanden sind. Da file.ts nur über ein übergeordnetes Element verfügen kann, gewinnt die Regel, die zuerst ausgeführt wird.

Die Sortierung ist auch für Regelabschnitte selbst wichtig, nicht nur für Dateien innerhalb eines Abschnitts. Sobald ein Dateipaar mit einer Dateischachtelungsregel übereinstimmt, werden andere Regeln weiter unten in der Datei ignoriert, und das nächste Dateipaar wird verarbeitet.

Schaltfläche für die Dateischachtelung

Sie können alle Einstellungen, einschließlich Ihrer eigenen benutzerdefinierten Einstellungen, über dieselbe Schaltfläche im Projektmappen-Explorer verwalten:

Screenshot der Menüelemente zum Aktivieren von benutzerdefinierten Dateischachtelungsregeln.

Aktivieren von benutzerdefinierten Dateischachtelungsregeln

Erstellen projektspezifischer Einstellungen

Sie können lösungsspezifische und projektspezifische Einstellungen erstellen, indem Sie dem Projektstamm- oder Projektstammordner eine .filenesting.json Datei hinzufügen.

Sie können lösungsspezifische und projektspezifische Einstellungen durch das Kontextmenü jeder Lösung und jedes Projekts erstellen.

Projektmappen- und projektspezifische Schachtelungsregeln

Lösungsspezifische und projektspezifische Einstellungen werden mit den aktiven Visual Studio-Einstellungen kombiniert. Beispielsweise verfügen Sie über eine leere projektspezifische Einstellungsdatei, der Projektmappen-Explorer schachtelt jedoch noch immer Dateien. Das Schachtelungsverhalten stammt entweder aus den projektmappenspezifischen Einstellungen oder den Visual Studio-Einstellungen. Die Rangfolge für das Zusammenführen der Einstellungen für die Dateischachtelung ist: Visual Studio > Projektmappe > Projekt.

Sie können Visual Studio anweisen, nur die lösungsspezifischen oder projektspezifischen Einstellungen zu verwenden, indem Sie den Stammknoten auf true setzen. Visual Studio beendet das Zusammenführen von Dateien auf dieser Ebene und kombiniert sie nicht mit Dateien, die höher oben in der Hierarchie sind.

Lösungsspezifische und projektspezifische Einstellungen können in die Quellcodeverwaltung eingecheckt werden, und das gesamte Team, das an der Codebasis arbeitet, kann sie freigeben.

Deaktivieren der Dateischachtelungsregeln für ein Projekt

Sie können vorhandene globale Dateischachtelungsregeln für bestimmte Lösungen oder Projekte deaktivieren, indem Sie die Entfernen-Aktion für einen Anbieter anstelle des Hinzufügens verwenden. Wenn Sie beispielsweise den folgenden Einstellungscode zu einem Projekt hinzufügen, werden alle PathSegment-Regeln , die global für dieses bestimmte Projekt vorhanden sein können, deaktiviert:

"dependentFileProviders": {
  "remove": {
    "pathSegment": {}
  }
}