Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обозреватель решений группирует связанные файлы, чтобы помочь упорядочивать их и упростить поиск. Например, если вы добавляете форму Windows Forms в проект, файл кода формы вложен под формой в обозревателе решений. В проектах на основе .NET Core (и более поздние версии) вложенность файлов можно развивать дальше. Вы можете выбрать между предустановками вложения файлов Off, Default и Web. Вы также можете настроить вложенные файлы или создать параметры, относящиеся к решению, и для конкретных проектов.
Замечание
В Visual Studio 2022 версии 17.2 и более ранних версиях эта функция была поддерживается только для проектов ASP.NET Core. Начиная с версии 17.3, все проекты, нацеленные на .NET, поддерживают вложенность файлов.
Параметры вложения файлов
Доступные варианты вложения файлов без настройки:
Выкл: Этот параметр предоставляет плоский список файлов без вложенности.
По умолчанию: этот параметр позволяет использовать поведение вложения файлов по умолчанию в обозревателе решений. Если параметры для заданного типа проекта отсутствуют, то файлы в проекте не будут вложены. Если существуют параметры (например, для веб-проекта), применяется вложенность.
Веб. Этот параметр применяет поведение вложения веб-файлов ко всем проектам в текущем решении. Он имеет множество правил, и мы рекомендуем вам проверить его и рассказать нам, что вы думаете. На следующем снимке экрана показаны лишь несколько примеров поведения вложенности файлов, доступного при выборе этого параметра.
Настройка вложенности файлов
Если вам не нравится то, что вы получаете по умолчанию, вы можете создать собственные настраиваемые параметры вложения файлов, которые указывают Обозревателю решений, как вкладывать файлы. Вы можете добавить столько пользовательских параметров вложения файлов, сколько вы хотите, и вы можете переключаться между ними по мере необходимости. Чтобы создать новый настраиваемый параметр, можно начать с пустого файла или использовать веб-параметры в качестве отправной точки:
Мы рекомендуем использовать веб-параметры в качестве отправной точки, так как проще работать с тем, что уже работает. При использовании веб-параметров в качестве отправной точки файл .filenesting.json выглядит следующим образом:
Давайте сосредоточимся на узле dependentFileProviders и его дочерних узлах. Каждый дочерний узел — это тип правила, который Visual Studio может использовать, чтобы вложить файлы. Например, когда у файла одно и то же имя, но другое расширение это один из типов правил. Доступные правила:
extensionToExtension: используйте этот тип правила для вложения file.js в file.ts
fileSuffixToExtension: используйте этот тип правила для вложения file-vsdoc.js в file.js
addedExtension: используйте этот тип правила для вложения file.html.css в file.html
pathSegment: используйте этот тип правила для вложения jquery.min.js в jquery.js
allExtensions: используйте этот тип правила для вложения файла.* под file.js
fileToFile: используйте этот тип правила, чтобы вложить bower.json под
.bowerrc
Поставщик ExtensionToExtension
Этот поставщик позволяет определить правила вложения файлов с помощью определенных расширений файлов. Рассмотрим следующий пример:
cart.js вложено в cart.ts в соответствии с первым правилом extensionToExtension
cart.js не вложено в cart.tsx, потому что
.ts
идет перед.tsx
в правилах, и может быть только один родитель.light.css вложена в light.sass из-за второго правила extensionToExtension
home.html вложено в home.md из-за третьего правила extensionToExtension
Поставщик fileSuffixToExtension
Этот поставщик работает так же, как и поставщик extensionToExtension , причем единственное различие заключается в том, что правило смотрит на суффикс файла вместо расширения. Рассмотрим следующий пример:
portal-vsdoc.js вложен под portal.js из-за правила fileSuffixToExtension
все остальные аспекты правила работают так же, как extensionToExtension
Поставщик addedExtension
Этот поставщик организует файлы с дополнительным расширением под файлы без дополнительного расширения. Дополнительное расширение может отображаться только в конце полного имени файла.
Рассмотрим следующий пример:
- file.html.css вложен в file.html из-за правила addedExtension
Замечание
Вы не указываете расширения файлов для addedExtension
правила. Он автоматически применяется ко всем расширениям файлов. То есть любой файл с тем же именем и расширением, что и у другого файла, но с дополнительным расширением на конце вложен под другой файл. Вы не можете ограничить эффект этого поставщика только определенными расширениями файлов.
Поставщик pathSegment
Этот поставщик вкладывает файлы с дополнительным расширением в файлы без дополнительного расширения. Дополнительное расширение может отображаться только в середине полного имени файла.
Рассмотрим следующий пример:
- jquery.min.js вложено в jquery.js из-за правила pathSegment
Замечание
Если для правила не указаны определенные расширения
pathSegment
файлов, он применяется ко всем расширениям файлов. То есть любой файл с тем же именем и расширением, что и у другого файла, но с дополнительным расширением посередине, вкладывается под этот файл.Вы можете ограничить эффект
pathSegment
правила определенными расширениями файлов, указав их следующим образом:"pathSegment": { "add": { ".*": [ ".js", ".css", ".html", ".htm" ] } }
Поставщик allExtensions
Этот поставщик позволяет определить правила вложения файлов с любым расширением, но одинаковым именем базового файла. Рассмотрим следующий пример:
- template.cs и template.doc вложены в template.tt из-за правила allExtensions .
Поставщик fileToFile
Этот поставщик позволяет определять правила вложения файлов на основе всех имен файлов. Рассмотрим следующий пример:
- .bowerrc вложен в bower.json из-за правила fileToFile
Порядок правил
Порядок важен в каждой части файла пользовательских параметров. Порядок выполнения правил можно изменить, перемещая их вверх или вниз внутри узла dependentFileProvider. Например, если у вас есть одно правило, которое делает file.js родительским элементом file.ts и другим правилом, которое делает file.coffee родительским элементом file.ts, порядок их отображения в файле определяет поведение вложения при наличии всех трех файлов. Поскольку file.ts может иметь только одного родителя, которое правило выполняется первым, то оно и победит.
Порядок также важен для разделов правил, а не только для файлов в разделе. Как только пара файлов соотносится с правилом вложения файлов, остальные правила, расположенные ниже, игнорируются, и следующая пара файлов обрабатывается.
Кнопка вложения файла
Вы можете управлять всеми параметрами, включая собственные пользовательские параметры, с помощью одной кнопки в обозревателе решений:
Создание параметров для конкретного проекта
Вы можете создавать параметры для конкретного решения и проекта с помощью контекстного меню (контекстное меню) каждого решения и проекта:
Параметры для конкретного решения и конкретного проекта объединяются с активными параметрами Visual Studio. Например, у вас может быть пустой файл параметров для конкретного проекта, но Обозреватель решений по-прежнему группирует файлы. Поведение вложенности определяется параметрами Visual Studio или параметрами, относящимися к решению. Приоритетом для объединения параметров вложения файлов является проект решения > Visual Studio>.
Вы можете указать Visual Studio использовать параметры, относящиеся только к решению или только к проекту, задав узлу корневой значение true. Visual Studio останавливает слияние файлов на этом уровне и не объединяет его с файлами выше иерархии.
Параметры, связанные с решением и конкретным проектом, можно проверить в системе управления версиями, и вся команда, которая работает в базе кода, может поделиться ими.
Отключите правила вложения файлов для проекта
Вы можете отключить существующие правила вложения глобальных файлов для определенных решений или проектов, используя действие удаления для поставщика вместо добавления. Например, если добавить в проект следующий код параметров, все правила pathSegment , которые могут существовать глобально для этого конкретного проекта, отключены:
"dependentFileProviders": {
"remove": {
"pathSegment": {}
}
}
Связанный контент
- Персонализация интегрированной среды разработки
- решения и проекты в Visual Studio