Udostępnij za pośrednictwem


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

Eksplorator rozwiązań zagnieżdża powiązane pliki, aby ułatwić ich organizowanie i ułatwia ich lokalizowanie. Jeśli na przykład dodasz formularz formularzy systemu Windows do projektu, plik kodu formularza zostanie zagnieżdżony poniżej formularza w Eksploratorze rozwiązań. W projektach .NET Core (i .NET 5 i nowszych) zagnieżdżanie plików można wykonać krok dalej. Można wybrać spośród opcji 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 / Notatka

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 wszystkie 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 niedostosowanych plików 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 Eksploratorze rozwiązań. Jeśli dla danego typu projektu nie istnieją żadne ustawienia, żadne pliki w projekcie nie są zagnieżdżone. Jeśli istnieją ustawienia (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ń

Dostosuj zagnieżdżanie plików

Jeśli nie lubisz tego, co gotowe, możesz utworzyć własne, niestandardowe ustawienia zagnieżdżania plików, które instruują Eksploratora 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ęźle dependentFileProviders 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 pod file.ts

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

  • addedExtension: użyj tego typu reguły, aby zagnieżdżać file.html.css pod 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.* wfile.js

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

Dostawca "extensionToExtension"

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 extentionToExtension

przykładowy efekt extentionToExtension

  • cart.js jest zagnieżdżona w cart.ts ze względu na pierwszą regułę extensionToExtension

  • cart.js nie jest zagnieżdżony pod cart.tsx, ponieważ .ts występuje wcześniej niż .tsx w regułach i może istnieć tylko jeden rodzic.

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

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

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ły

przykładowy efekt fileSuffixToExtension

  • portal-vsdoc.js jest zagnieżdżona pod portal.js ze względu na regułę fileSuffixToExtension

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

Dostawca rozszerzenia dodanego

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ły

przykład efektu addedExtension

  • file.html.css jest zagnieżdżona w file.html z powodu reguły addedExtension

Uwaga / Notatka

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 segmentu ścieżki

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 pathSegment

przykładowy efekt pathSegment

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

Uwaga / Notatka

  • 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 allExtensions

efekt przykładowy allExtensions

  • template.cs i template.doc są zagnieżdżone pod 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 fileToFile

przykładowy efekt fileToFile

  • Plik bowerrc jest zagnieżdżony w bower.json ze względu na regułę 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 czyni file.js elementem nadrzędnym dla file.ts i inną regułę, która czyni file.coffee elementem nadrzędnym dla file.ts, to kolejność, w jakiej występują w pliku, określa zachowanie zagnieżdżenia, gdy wszystkie trzy pliki są obecne. Ponieważ file.ts może mieć tylko jeden element nadrzędny, wygrywa reguła, która zostanie wykonana jako pierwsza.

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 Eksploratorze 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: Visual Studio > Rozwiązanie > Projekt.

Program Visual Studio może użyć 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": {}
  }
}