Freigeben über


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.

Dateischachtelungsoptionen

Schaltfläche zum Aktivieren/Deaktivieren der Dateischachtelung

Die verfügbaren Optionen für nicht angepasste Dateischachtelung sind:

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

  • Standard: Mit dieser Option erhalten Sie das Standardverhalten der Dateischachtelung im Projektmappen-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 Schachtelung 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:

    Dateischachtelung im Projektmappen-Explorer

Anpassen der Dateischachtelung

Wenn Ihnen die standardmäßig angebotenen Funktionen nicht gefallen, können Sie eigene, benutzerdefinierte Dateischachtelungseinstellungen festlegen, die den Projektmappen-Explorer anweisen, wie Dateien zu verschachteln sind. 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:

Verwenden vorhandener Dateischachtelungsregeln als Grundlage für benutzerdefinierte Einstellungen

Konzentrieren wir uns auf den Knoten dependentFileProviders und seine untergeordneten Knoten. Jeder Kindknoten 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 diesen Regeltyp, 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:

extentionToExtension-Beispielregeln

ExtentionToExtension Beispiel Effekt

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

  • cart.js ist nicht unter cart.tsx geschachtelt, da .ts vor .tsx in den Regeln steht und es nur ein übergeordnetes Element geben kann.

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

  • home.html ist aufgrund der dritten Regel ExtensionToExtension in home.md eingebettet.

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:

fileSuffixToExtension-Beispielregeln

fileSuffixToExtension-Beispieleffekt

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

  • jeder andere Aspekt der Regel funktioniert auf die gleiche Weise 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:

addedExtension-Beispielregeln

addedExtension-Beispieleffekt

  • file.html.css wird aufgrund der Regel 'addedExtension' 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:

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:

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:

fileToFile-Beispielregeln

fileToFile-Beispieleffekt

  • .bowerrc ist aufgrund der fileToFile-Regel unter bower.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 ein übergeordnetes Element haben kann, gilt 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 "Dateischachtelung"

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

Aktivieren von benutzerdefinierten Dateischachtelungsregeln

Erstellen projektspezifischer Einstellungen

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

Lösungs- und projektspezifische Schachtelungsregeln

Lösungsspezifische und projektspezifische Einstellungen werden mit den aktiven Visual Studio-Einstellungen kombiniert. Beispielsweise können Sie eine leere projektspezifische Einstellungsdatei haben, aber der Projektmappen-Explorer schachtelt weiterhin Dateien. Das Schachtelungsverhalten stammt entweder aus den lösungsspezifischen Einstellungen oder den Visual Studio-Einstellungen. Die Rangfolge für das Zusammenführen von Dateischachtelungseinstellungen ist: Visual Studio > Lösung > 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 von 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": {}
  }
}