Zagnieżdżanie plików w Eksploratorze rozwiązań

Eksplorator rozwiązań zagnieżdża pliki powiązane, aby ułatwić ich organizowanie i ułatwianie ich lokalizowania. Jeśli na przykład dodasz formularz windows Forms do projektu, plik kodu formularza zostanie zagnieżdżony poniżej formularza w Eksplorator rozwiązań. W projektach .NET Core (i .NET 5 i nowszych) zagnieżdżanie plików można wykonać krok dalej. Można wybrać między ustawieniami wstępnymi zagnieżdżania plików Off, Default i Web. Możesz również dostosować sposób zagnieżdżenia plików lub utworzyć ustawienia specyficzne dla rozwiązania i specyficzne dla projektu.

Uwaga

W programie Visual Studio 2022 w wersji 17.2 lub starszej ta funkcja była obsługiwana tylko w projektach ASP.NET Core. W wersji 17.3 lub nowszej projekty przeznaczone dla platformy .NET obsługują zagnieżdżanie plików.

Opcje zagnieżdżania plików

Przycisk włączania/wyłączania zagnieżdżania plików

Dostępne opcje zagnieżdżania plików, które nie są dostosowane, to:

  • Wyłączone: Ta opcja zapewnia płaską listę plików bez zagnieżdżania.

  • Ustawienie domyślne: Ta opcja zapewnia domyślne zachowanie zagnieżdżania plików w Eksplorator rozwiązań. Jeśli dla danego typu projektu nie istnieją żadne ustawienia, żadne pliki w projekcie nie są zagnieżdżone. Jeśli ustawienia istnieją, na przykład dla projektu internetowego, zagnieżdżanie jest stosowane.

  • Sieć Web: Ta opcja stosuje zachowanie zagnieżdżania plików sieci Web do wszystkich projektów w bieżącym rozwiązaniu. Ma wiele zasad i zachęcamy do sprawdzenia go i powiedz nam, co myślisz. Poniższy zrzut ekranu przedstawia kilka przykładów zachowania zagnieżdżania plików, które można uzyskać za pomocą tej opcji:

    Zagnieżdżanie plików w Eksploratorze rozwiązań

Dostosowywanie zagnieżdżania plików

Jeśli nie lubisz tego, co gotowe, możesz utworzyć własne, niestandardowe ustawienia zagnieżdżania plików, które instruują Eksplorator rozwiązań, jak zagnieżdżać pliki. Możesz dodać dowolną liczbę niestandardowych ustawień zagnieżdżania plików i przełączać się między nimi zgodnie z potrzebami. Aby utworzyć nowe ustawienie niestandardowe, możesz zacząć od pustego pliku lub użyć ustawień sieci Web jako punktu początkowego:

Dodawanie niestandardowych reguł zagnieżdżania plików

Zalecamy używanie ustawień sieci Web jako punktu początkowego, ponieważ łatwiej jest pracować z czymś, co już działa. Jeśli używasz ustawień sieci Web jako punktu początkowego, plik .filenesting.json wygląda podobnie do następującego pliku:

Użyj istniejących reguł zagnieżdżania plików jako podstawy ustawień niestandardowych

Skoncentrujmy się na węzłach zależnychFileProviders i jego węzłach podrzędnych. Każdy węzeł podrzędny jest typem reguły, za pomocą którego program Visual Studio może zagnieżdżać pliki. Na przykład posiadanie tej samej nazwy pliku, ale inne rozszerzenie jest jednym typem reguły. Dostępne reguły to:

  • extensionToExtension: użyj tego typu reguły, aby zagnieżdżać file.js w obszarze file.ts

  • fileSuffixToExtension: użyj tego typu reguły, aby zagnieżdżać file-vsdoc.js w obszarze file.js

  • addedExtension: użyj tego typu reguły, aby zagnieżdżać file.html.css w obszarze file.html

  • pathSegment: użyj tego typu reguły, aby zagnieżdżać jquery.min.js w obszarze jquery.js

  • allExtensions: użyj tego typu reguły do zagnieżdżania pliku.* w file.js

  • fileToFile: użyj tego typu reguły, aby zagnieżdżać bower.json w obszarze .bowerrc

Dostawca rozszerzeniaToExtension

Ten dostawca umożliwia definiowanie reguł zagnieżdżania plików przy użyciu określonych rozszerzeń plików. Rozważmy następujący przykład:

przykładowe reguły rozszerzenia extentionToExtensionprzykładowy efekt extentionToExtension

  • cart.js jest zagnieżdżona w cart.ts z powodu pierwszej reguły rozszerzeniaToExtension

  • cart.js nie jest zagnieżdżona w obszarze cart.tsx, ponieważ .ts występuje przed tsx w regułach i może istnieć tylko jeden element nadrzędny

  • light.css jest zagnieżdżona w obszarze light.sass z powodu drugiej reguły rozszerzeniaToExtension

  • home.html jest zagnieżdżona w home.md z powodu trzeciej reguły rozszerzeniaToExtension

Dostawca fileSuffixToExtension

Ten dostawca działa podobnie jak dostawca extensionToExtension , a jedyną różnicą jest to, że reguła sprawdza sufiks pliku, a nie tylko rozszerzenie. Rozważmy następujący przykład:

fileSuffixToExtension — przykładowe regułyprzykładowy efekt fileSuffixToExtension

  • portal-vsdoc.js jest zagnieżdżona w portal.js z powodu reguły fileSuffixToExtension

  • każdy inny aspekt reguły działa tak samo jak extensionToExtension

Dostawca addedExtension

Ten dostawca zagnieżdża pliki z dodatkowym rozszerzeniem w pliku bez dodatkowego rozszerzenia. Dodatkowe rozszerzenie może pojawić się tylko na końcu pełnej nazwy pliku.

Rozważmy następujący przykład:

addedExtension — przykładowe regułyefekt przykładowy addedExtension

  • file.html.css jest zagnieżdżona w file.htmlze względu na dodaną regułęextension

Uwaga

Nie określasz żadnych rozszerzeń plików dla addedExtension reguły; jest ona automatycznie stosowana do wszystkich rozszerzeń plików. Oznacza to, że każdy plik o tej samej nazwie i rozszerzeniu co inny plik oraz dodatkowe rozszerzenie na końcu jest zagnieżdżone w innym pliku. Nie można ograniczyć wpływu tego dostawcy na tylko określone rozszerzenia plików.

Dostawca pathSegment

Ten dostawca zagnieżdża pliki z dodatkowym rozszerzeniem w pliku bez dodatkowego rozszerzenia. Dodatkowe rozszerzenie może być wyświetlane tylko w środku pełnej nazwy pliku.

Rozważmy następujący przykład:

przykładowe reguły pathSegmentprzykładowy efekt pathSegment

  • jquery.min.js jest zagnieżdżona w jquery.jsze względu na regułę pathSegment

Uwaga

  • Jeśli nie określisz żadnych określonych rozszerzeń plików dla pathSegment reguły, będzie ona stosowana do wszystkich rozszerzeń plików. Oznacza to, że każdy plik o tej samej nazwie i rozszerzeniu co inny plik oraz dodatkowe rozszerzenie w środku jest zagnieżdżony pod innym plikiem.

  • Efekt reguły można ograniczyć pathSegment do określonych rozszerzeń plików, określając je w następujący sposób:

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

Dostawca allExtensions

Ten dostawca umożliwia definiowanie reguł zagnieżdżania plików dla plików z dowolnym rozszerzeniem, ale tą samą podstawową nazwą pliku. Rozważmy następujący przykład:

przykładowe reguły allExtensionsefekt przykładowy allExtensions

  • template.cs i template.doc są zagnieżdżone w template.tt ze względu na regułę allExtensions.

Dostawca fileToFile

Ten dostawca umożliwia definiowanie reguł zagnieżdżania plików na podstawie całych nazw plików. Rozważmy następujący przykład:

przykładowe reguły fileToFileprzykładowy efekt fileToFile

  • Plik bowerrc jest zagnieżdżony w bower.json z powodu reguły fileToFile

Kolejność reguł

Kolejność jest ważna w każdej części pliku ustawień niestandardowych. Kolejność wykonywania reguł można zmienić, przenosząc je w górę lub w dół w węźle dependentFileProvider . Jeśli na przykład masz jedną regułę, która sprawia , że file.js element nadrzędny file.ts i inną regułę, która sprawia , że plik.coffee jest elementem nadrzędnym file.ts, kolejność ich wyświetlania w pliku określa zachowanie zagnieżdżenia, gdy istnieją wszystkie trzy pliki. Ponieważ file.ts może mieć tylko jeden element nadrzędny, w zależności od tego, która reguła wykonuje pierwsze zwycięstwa.

Porządkowanie jest również ważne dla samych sekcji reguł, a nie tylko dla plików w sekcji. Gdy tylko para plików jest zgodna z regułą zagnieżdżania plików, inne reguły w dalszej części pliku są ignorowane, a następna para plików jest przetwarzana.

Przycisk zagnieżdżania plików

Możesz zarządzać wszystkimi ustawieniami, w tym własnymi ustawieniami niestandardowymi, za pomocą tego samego przycisku w Eksplorator rozwiązań:

Aktywowanie niestandardowych reguł zagnieżdżania plików

Tworzenie ustawień specyficznych dla projektu

Ustawienia specyficzne dla rozwiązania i specyficzne dla projektu można utworzyć za pomocą menu prawym przyciskiem myszy (menu kontekstowe) każdego rozwiązania i projektu:

Rozwiązania i reguły zagnieżdżania specyficzne dla projektu

Ustawienia specyficzne dla rozwiązania i specyficzne dla projektu są łączone z aktywnymi ustawieniami programu Visual Studio. Na przykład może istnieć pusty plik ustawień specyficznych dla projektu, ale Eksplorator rozwiązań nadal zagnieżdża pliki. Zachowanie zagnieżdżania pochodzi z ustawień specyficznych dla rozwiązania lub ustawień programu Visual Studio. Priorytetem scalania ustawień zagnieżdżania plików jest: Projekt rozwiązania > programu Visual Studio>.

Program Visual Studio może zignorować ustawienia specyficzne dla rozwiązania i ustawienia specyficzne dla projektu, nawet jeśli pliki istnieją na dysku, włączając opcję Ignoruj rozwiązanie i ustawienia projektu w obszarze Narzędzia>Opcje>ASP.NET Zagnieżdżanie plików podstawowych.>

Możesz wykonać odwrotne czynności i poinformować program Visual Studio, aby używał tylko ustawień specyficznych dla rozwiązania lub ustawień specyficznych dla projektu, ustawiając węzeł główny na wartość true. Program Visual Studio zatrzymuje scalanie plików na tym poziomie i nie łączy go z plikami wyższymi w hierarchii.

Ustawienia specyficzne dla rozwiązania i specyficzne dla projektu można zaewidencjonować w kontroli źródła, a cały zespół, który pracuje na bazie kodu, może je udostępniać.

Wyłączanie reguł zagnieżdżania plików dla projektu

Istniejące globalne reguły zagnieżdżania plików dla określonych rozwiązań lub projektów można wyłączyć przy użyciu akcji usuwania dla dostawcy zamiast dodawania. Jeśli na przykład dodasz następujący kod ustawień do projektu, wszystkie reguły pathSegment , które mogą istnieć globalnie dla tego konkretnego projektu, zostaną wyłączone:

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