Bestandsnesten in Solution Explorer

Solution Explorer nestt gerelateerde bestanden om ze te organiseren en ze gemakkelijker te vinden. Als u bijvoorbeeld een Windows Forms-formulier aan een project toevoegt, wordt het codebestand voor het formulier genest onder het formulier in Solution Explorer. In .NET Core-projecten (en .NET 5 en hoger) kan het nesten van bestanden nog een stap verder worden gezet. U kunt kiezen tussen de presets voor het nesten van bestanden: Uit, Standaard en Web. U kunt ook aanpassen hoe bestanden zijn genest of oplossingsspecifieke en projectspecifieke instellingen maken.

Opmerking

In Visual Studio 2022 versie 17.2 en eerder werd deze functie alleen ondersteund voor ASP.NET Core-projecten. In versie 17.3 en later ondersteunen alle projecten die zijn gericht op .NET bestandsnesten.

Opties voor het nesten van bestanden

Schermopname van de knop voor het in- en uitschakelen van het nesten van bestanden.

Knop voor het in-/uitschakelen van het nesten van bestanden

De beschikbare opties voor niet-aangepaste bestandsnesting zijn:

  • Uit: Met deze optie krijgt u een platte lijst met bestanden zonder hiërarchie.

  • Standaard: Met deze optie krijgt u het standaardgedrag voor het nesten van bestanden in Solution Explorer. Als er geen instellingen voor een bepaald projecttype bestaan, worden er geen bestanden in het project genest. Als er instellingen bestaan (bijvoorbeeld voor een webproject), wordt nesten toegepast.

  • Web: Met deze optie wordt het nestgedrag van het webbestand toegepast op alle projecten in de huidige oplossing. Het heeft talloze regels en we raden u aan om het te bekijken en ons te vertellen wat u ervan vindt. In de volgende schermafbeelding ziet u slechts enkele voorbeelden van het gedrag voor het nesten van bestanden dat u krijgt met deze optie:

    Schermopname met bestands genest in Solution Explorer.

    Bestandsnesten in Solution Explorer

Bestands genest aanpassen

Als u niet tevreden bent over wat u uit de doos haalt, kunt u uw eigen, aangepaste instellingen voor het nesten van bestanden maken die Solution Explorer instrueren hoe u bestanden kunt nesten. U kunt zo veel aangepaste instellingen voor het nesten van bestanden toevoegen als u wilt en u kunt naar wens schakelen tussen deze instellingen. Als u een nieuwe aangepaste instelling wilt maken, kunt u beginnen met een leeg bestand of kunt u de standaardinstellingen als uitgangspunt gebruiken:

Schermopname van het dialoogvenster 'Aangepaste bestandsnesting-instellingen toevoegen'.

U wordt aangeraden standaardinstellingen als uitgangspunt te gebruiken, omdat het eenvoudiger is om te werken met iets dat al functioneert. Als u de standaardinstellingen als uitgangspunt gebruikt, ziet het .filenesting.json bestand er ongeveer als volgt uit:

Als u niet tevreden bent over wat u uit de doos haalt, kunt u uw eigen, aangepaste instellingen voor het nesten van bestanden maken die Solution Explorer instrueren hoe u bestanden kunt nesten. U kunt zo veel aangepaste instellingen voor het nesten van bestanden toevoegen als u wilt en u kunt naar wens schakelen tussen deze instellingen. Als u een nieuwe aangepaste instelling wilt maken, kunt u beginnen met een leeg bestand of kunt u de webinstellingen als uitgangspunt gebruiken:

Aangepaste regels voor het nesten van bestanden toevoegen

We raden u aan om webinstellingen als uitgangspunt te gebruiken, omdat het eenvoudiger is om te werken met iets dat al werkt. Als u de webinstellingen als uitgangspunt gebruikt, ziet het .filenesting.json bestand er ongeveer als volgt uit:

Schermopname van geneste regelproviders in een bestand met aangepaste instellingen.

Bestaande regels voor het nesten van bestanden gebruiken als basis voor aangepaste instellingen

Laten we ons richten op het knooppunt dependentFileProviders en de onderliggende knooppunten. Elk kindknooppunt is een type regel dat Visual Studio kan gebruiken om bestanden te rangschikken. Als voorbeeld is het hebben van dezelfde bestandsnaam, maar een andere extensie één type regel. De beschikbare regels zijn:

  • extensionToExtension: Gebruik dit type regel om file.js onder file.ts te plaatsen

  • fileSuffixToExtension: gebruik dit type regel om file-vsdoc.js te nesten onder file.js

  • addedExtension: Gebruik dit type regel om file.html.css te nesten onder file.html

  • pathSegment: Gebruik dit type regel om jquery.min.js te nesten onder jquery.js

  • allExtensions: gebruik dit type regel om het bestand te nesten.* onder file.js

  • fileToFile: Gebruik dit type regel om bower.json te nesten onder .bowerrc

De extensie-naar-extensie-provider

Met deze provider kunt u regels voor het nesten van bestanden definiëren met behulp van specifieke bestandsextensies. Bekijk het volgende voorbeeld:

Schermopname van een extentionToExtension-regel.

Schermopname van het effect van de extensieToExtension-regel.

extentionToExtension-voorbeeldregels

voorbeeldeffect extentionToExtension

  • file.js is genest onder file.ts vanwege de eerste extensionToExtension-regel.

  • file.js is niet genest onder file.tsx, omdat .ts voor .tsx is geplaatst volgens de regels en er slechts één bovenliggend item kan zijn.

  • light.css is genest binnen light.sass vanwege de tweede regel van extensionToExtension.

  • home.html is genesteld onder home.md vanwege de derde extensionToExtension-regel.

De fileSuffixToExtension-provider

Deze provider werkt net als de extensieToExtension-provider , met het enige verschil dat de regel het achtervoegsel van het bestand bekijkt in plaats van alleen de extensie. Bekijk het volgende voorbeeld:

Schermopname van een fileSuffixToExtension-regel.

Schermopname van het effect van de fileSuffixToExtension-regel.

fileSuffixToExtension-voorbeeldregels

voorbeeld van het effect van fileSuffixToExtension

  • portal-vsdoc.js is genest onder portal.js vanwege de fileSuffixToExtension-regel .

  • Elk ander aspect van de regel werkt op dezelfde manier als extensionToExtension.

De toegevoegde extensie-provider

Deze provider nestt bestanden met een extra extensie onder het bestand zonder een extra extensie. De extra extensie kan alleen worden weergegeven aan het einde van de volledige bestandsnaam.

Bekijk het volgende voorbeeld:

Schermopname van de toegevoegde extensie-regel.

Schermopname van het effect van de toegevoegdeextension-regel.

toegevoegdeExtension-voorbeeldregels

toegevoegdeExtensie voorbeeldEffect

  • file.html.css is genest onder file.html vanwege de regel addedExtension.

Opmerking

U geeft geen bestandsextensies op voor de addedExtension regel; deze is automatisch van toepassing op alle bestandsextensies. Dat wil gezegd, elk bestand met dezelfde naam en extensie als een ander bestand plus een extra extensie aan het einde is genest onder het andere bestand. U kunt het effect van deze provider niet beperken tot alleen specifieke bestandsextensies.

De pathSegment-provider

Deze provider nestt bestanden met een extra extensie onder een bestand zonder extra extensie. De extra extensie kan alleen worden weergegeven in het midden van de volledige bestandsnaam.

Bekijk het volgende voorbeeld:

Schermopname van een pathSegment-regel.

Schermopname van het effect van de pathSegment-regel.

pathSegment-voorbeeldregels

pathSegment-voorbeeldeffect

  • jquery.min.js is genest onder jquery.js vanwege de pathSegment-regel .

Opmerking

  • Als u geen specifieke bestandsextensies voor de pathSegment regel opgeeft, is deze van toepassing op alle bestandsextensies. Dat wil gezegd, elk bestand met dezelfde naam en extensie als een ander bestand plus een extra extensie in het midden is genest onder het andere bestand.

  • U kunt het effect van de pathSegment regel beperken tot specifieke bestandsextensies door ze op te geven op de volgende manier:

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

De allExtensions-provider

Met deze provider kunt u regels voor het nesten van bestanden definiëren met elke extensie, maar dezelfde basisbestandsnaam. Bekijk het volgende voorbeeld:

Schermopname van de allExtensions-regel.

Schermopname van het effect van de allExtensions-regel.

voorbeeldregels van allExtensions

voorbeeldeffect allExtensions

  • Template.cs en Template.doc zijn genest onder Template.tt vanwege de allExtensions-regel .

De FileToFile-provider

Met deze provider kunt u regels voor het nesten van bestanden definiëren op basis van volledige bestandsnamen. Bekijk het volgende voorbeeld:

Schermopname van een fileToFile-regel.

Schermopname van het effect van de fileToFile-regel.

bestandToFile-voorbeeldregels

voorbeeldeffect fileToFile

  • file.npmrc bevindt zich onder package.json door de fileToFile-regel.

Regelvolgorde

Ordenen is belangrijk in elk deel van uw aangepaste instellingenbestand. U kunt de volgorde wijzigen waarin regels worden uitgevoerd door ze omhoog of omlaag te verplaatsen in het knooppunt dependentFileProvider . Als u bijvoorbeeld één regel hebt waarmee file.js het bovenliggende element van file.ts en een andere regel die file.coffee het bovenliggende element van file.ts maakt, bepaalt de volgorde waarin ze in het bestand worden weergegeven, het nestgedrag wanneer alle drie de bestanden aanwezig zijn. Omdat file.ts slechts één bovenliggend element kan hebben, krijgt de regel die als eerste wordt uitgevoerd voorrang.

Ordenen is ook belangrijk voor regelsecties zelf, niet alleen voor bestanden in een sectie. Zodra een paar bestanden overeenkomt met een regel voor het nesten van bestanden, worden andere regels verderop in de rij genegeerd en wordt het volgende paar bestanden verwerkt.

Bestandstructuurknop

U kunt alle instellingen, inclusief uw eigen aangepaste instellingen, beheren via dezelfde knop in Solution Explorer:

Schermopname van de menu-items voor het activeren van aangepaste regels voor het nesten van bestanden.

Aangepaste regels voor het nesten van bestanden activeren

Projectspecifieke instellingen maken

U kunt oplossingsspecifieke en projectspecifieke instellingen maken door een .filenesting.json-bestand toe te voegen aan de hoofdmap van de oplossing of de hoofdmap van het project.

U kunt oplossingsspecifieke en projectspecifieke instellingen maken via het snelmenu (contextmenu) van elke oplossing en elk project:

Oplossings- en projectspecifieke nestregels

Oplossingsspecifieke en projectspecifieke instellingen worden gecombineerd met de actieve Visual Studio-instellingen. U hebt bijvoorbeeld mogelijk een leeg projectspecifiek instellingenbestand, maar Solution Explorer nestt nog steeds bestanden. Het nestgedrag is afkomstig van de oplossingsspecifieke instellingen of de Visual Studio-instellingen. De prioriteit voor het samenvoegen van instellingen voor het nesten van bestanden is: Visual Studio > Solution > Project.

U kunt Visual Studio vertellen om alleen de oplossingsspecifieke of projectspecifieke instellingen te gebruiken door het hoofdknooppunt in te stellen op waar. Visual Studio stopt met het samenvoegen van bestanden op dat niveau en combineert deze niet met bestanden die hoger in de hiërarchie zijn.

Oplossingsspecifieke en projectspecifieke instellingen kunnen worden ingecheckt bij broncodebeheer en het hele team dat op de codebasis werkt, kan deze delen.

Regels voor bestandsnesting voor een project uitschakelen

U kunt bestaande algemene regels voor het nesten van bestanden uitschakelen voor specifieke oplossingen of projecten met behulp van de verwijderactie voor een provider in plaats van toe te voegen. Als u bijvoorbeeld de volgende instellingencode aan een project toevoegt, worden alle pathSegment-regels die wereldwijd voor dit specifieke project kunnen bestaan uitgeschakeld:

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