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
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:
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:
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:
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:
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:
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:
- file.html.css jest zagnieżdżona w file.html ze 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:
- jquery.min.js jest zagnieżdżona w jquery.js ze 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:
- 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:
- 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ń:
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:
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": {}
}
}