솔루션 탐색기는 관련 파일을 중첩하여 파일을 구성하고 쉽게 찾을 수 있도록 합니다. 예를 들어 프로젝트에 Windows Forms 양식을 추가하는 경우 양식의 코드 파일이 솔루션 탐색기의 양식 아래에 중첩됩니다. .NET Core(및 .NET 5 이상) 프로젝트에서 파일 중첩을 한 단계 더 수행할 수 있습니다. 파일 중첩 미리 설정 해제, 기본값 및 웹 중에서 선택할 수 있습니다. 파일을 중첩하는 방법을 사용자 지정하거나 솔루션별 및 프로젝트별 설정을 만들 수도 있습니다.
비고
Visual Studio 2022 버전 17.2 이하에서는 이 기능이 ASP.NET Core 프로젝트에만 지원되었습니다. 버전 17.3 이상에서는 모든 .NET 대상 프로젝트가 파일 중첩을 지원합니다.
파일 중첩 옵션
사용자 지정되지 않은 파일 중첩에 사용할 수 있는 옵션은 다음과 같습니다.
Off: 이 옵션은 중첩 없이 파일의 플랫 목록을 제공합니다.
기본값: 이 옵션은 솔루션 탐색기에서 기본 파일 중첩 동작을 제공합니다. 지정된 프로젝트 형식에 대한 설정이 없으면 프로젝트의 파일이 중첩되지 않습니다. 설정이 있는 경우(예: 웹 프로젝트의 경우) 중첩이 적용됩니다.
웹: 이 옵션은 현재 솔루션의 모든 프로젝트에 웹 파일 중첩 동작을 적용합니다. 그것은 수많은 규칙을 가지고 있으며, 우리는 당신이 그것을 확인하고 당신이 어떻게 생각하는지 알려하는 것이 좋습니다. 다음 스크린샷은 이 옵션을 사용하여 가져오는 파일 중첩 동작의 몇 가지 예만 강조 표시합니다.
파일 중첩 사용자 지정
기본 제공 항목이 마음에 들지 않는 경우 솔루션 탐색기 에서 파일을 중첩하는 방법을 지시하는 사용자 지정 파일 중첩 설정을 직접 만들 수 있습니다. 원하는 만큼 사용자 지정 파일 중첩 설정을 추가할 수 있으며 원하는 대로 사용자 지정 파일 중첩 설정을 전환할 수 있습니다. 새 사용자 지정 설정을 만들려면 빈 파일로 시작하거나 웹 설정을 시작점으로 사용할 수 있습니다.
웹 설정은 이미 작동하는 작업을 더 쉽게 수행할 수 있으므로 시작점으로 사용하는 것이 좋습니다. 웹 설정을 시작점으로 사용하는 경우 .filenesting.json 파일은 다음 파일과 유사합니다.
dependentFileProviders 노드와 해당 자식 노드에 집중해 보겠습니다. 각 자식 노드는 Visual Studio에서 파일을 중첩하는 데 사용할 수 있는 규칙의 유형입니다. 예를 들어 파일 이름이 같지만 확장명은 다른 규칙의 한 가지 유형입니다. 사용 가능한 규칙은 다음과 같습니다.
extensionToExtension: 이 유형의 규칙을 사용하여 file.ts 아래에 file.js 중첩합니다.
fileSuffixToExtension: 이 유형의 규칙을 사용하여file.js 아래에 file-vsdoc.js 중첩합니다.
addedExtension: 이 유형의 규칙을 사용하여 file.html 아래에 file.html.css 중첩합니다.
pathSegment: 이 유형의 규칙을 사용하여 jquery.js 아래에 jquery.min.js 중첩합니다.
allExtensions: 이 유형의 규칙을 사용하여 file.js 아래에 file.*을 중첩하세요.
fileToFile: 이 유형의 규칙을 사용하여 bower.json을
.bowerrc
아래에 중첩합니다.
extensionToExtension 공급자
이 공급자를 사용하면 특정 파일 확장자를 사용하여 파일 중첩 규칙을 정의할 수 있습니다. 다음 예제를 고려하세요.
cart.js는 첫 번째 extensionToExtension 규칙 때문에 cart.ts 아래에 중첩됩니다.
cart.js는 규칙에서 가
.ts
앞에 오기 때문에.tsx
아래에 중첩되지 않으며 부모는 하나만 있을 수 있습니다.light.css 두 번째 extensionToExtension 규칙 때문에 light.sass 아래에 중첩됩니다.
home.html 세 번째 extensionToExtension 규칙으로 인해 home.md 아래에 중첩됩니다.
fileSuffixToExtension 공급자
이 공급자는 extensionToExtension 공급자와 동일하게 작동하며, 유일한 차이점은 규칙이 확장 프로그램 대신 파일의 접미사를 확인한다는 것입니다. 다음 예제를 고려하세요.
portal-vsdoc.jsfileSuffixToExtension 규칙으로 인해 portal.js 아래에 중첩됩니다.
규칙의 다른 모든 측면은 extensionToExtension과 동일한 방식으로 작동합니다.
addedExtension 공급자
이 공급자는 추가 확장명 없이 파일 아래에 추가 확장명 파일을 중첩합니다. 추가 확장명은 전체 파일 이름의 끝에만 표시할 수 있습니다.
다음 예제를 고려하세요.
- file.html.css추가된Extension 규칙으로 인해 file.html 아래에 중첩됩니다.
비고
규칙에 대한 addedExtension
파일 확장명은 지정하지 않으며 모든 파일 확장 프로그램에 자동으로 적용됩니다. 즉, 다른 파일과 동일한 이름 및 확장명을 가진 파일과 끝에 추가 확장명을 가진 파일은 다른 파일 아래에 중첩됩니다. 이 공급자의 효과는 특정 파일 확장만으로 제한할 수 없습니다.
경로 세그먼트 공급자
이 공급자는 추가 확장명 없이 파일 아래에 추가 확장명 파일을 중첩합니다. 추가 확장명은 전체 파일 이름의 중간에만 나타날 수 있습니다.
다음 예제를 고려하세요.
- pathSegment 규칙 때문에 jquery.min.jsjquery.js 아래에 중첩됩니다.
비고
규칙에 대한
pathSegment
특정 파일 확장자를 지정하지 않으면 모든 파일 확장 프로그램에 적용됩니다. 즉, 다른 파일과 동일한 이름 및 확장명을 가진 파일과 중간에 추가 확장명을 가진 파일은 다른 파일 아래에 중첩됩니다.다음과 같은 방법으로 지정하여 규칙의
pathSegment
효과를 특정 파일 확장으로 제한할 수 있습니다."pathSegment": { "add": { ".*": [ ".js", ".css", ".html", ".htm" ] } }
allExtensions 공급자
이 공급자를 사용하면 확장명을 제외한 기본 파일 이름이 동일한 파일에 대한 파일 중첩 규칙을 정의할 수 있습니다. 다음 예제를 고려하세요.
- template.cs 및 template.docallExtensions 규칙 때문에 template.tt 아래에 중첩됩니다.
fileToFile 공급자
이 공급자를 사용하면 전체 파일 이름을 기반으로 파일 중첩 규칙을 정의할 수 있습니다. 다음 예제를 고려하세요.
- .bowerrc는 fileToFile 규칙 때문에 bower.json 아래에 중첩됩니다.
규칙 순서
순서 지정은 사용자 지정 설정 파일의 모든 부분에서 중요합니다. 종속FileProvider 노드 내에서 위로 또는 아래로 이동하여 규칙이 실행되는 순서를 변경할 수 있습니다. 예를 들어 file.ts 부모로 file.js 규칙 하나와 file.coffee를 file.ts 부모로 만드는 다른 규칙이 있는 경우 파일에 표시되는 순서에 따라 세 개의 파일이 모두 있을 때 중첩 동작이 결정됩니다. file.ts는 하나의 부모만 가질 수 있으므로, 어떤 규칙이 먼저 실행되느냐에 따라 그 규칙이 적용됩니다.
순서 지정은 섹션 내의 파일뿐만 아니라 규칙 섹션 자체에도 중요합니다. 파일 쌍이 파일 중첩 규칙과 일치하면 파일의 다른 규칙이 무시되고 다음 파일 쌍이 처리됩니다.
파일 중첩 단추
솔루션 탐색기에서 동일한 단추를 통해 사용자 고유의 사용자 지정 설정을 포함한 모든 설정을 관리할 수 있습니다.
프로젝트별 설정 만들기
각 솔루션 및 프로젝트의 오른쪽 클릭 메뉴(상황에 맞는 메뉴)를 통해 솔루션별 및 프로젝트별 설정을 만들 수 있습니다.
솔루션별 및 프로젝트별 설정은 활성 Visual Studio 설정과 결합됩니다. 예를 들어 프로젝트별 설정 파일이 비어 있을 수 있지만 솔루션 탐색기는 여전히 파일을 중첩하고 있습니다. 중첩 동작은 솔루션별 설정 또는 Visual Studio 설정에서 가져옵니다. 파일 중첩 설정을 병합하기 위한 우선 순위는 Visual Studio > 솔루션 > 프로젝트입니다.
루트 노드를 true로 설정하여 Visual Studio에 솔루션별 설정 또는 프로젝트별 설정만 사용하도록 지시할 수 있습니다. Visual Studio는 해당 수준에서 파일 병합을 중지하고 계층 구조의 상위 파일과 결합하지 않습니다.
솔루션별 및 프로젝트별 설정을 소스 제어에 체크 인할 수 있으며 코드베이스에서 작동하는 전체 팀이 이를 공유할 수 있습니다.
프로젝트에 대한 파일 중첩 규칙 사용 안 함
추가 대신 공급자에 대한 제거 작업을 사용하여 특정 솔루션 또는 프로젝트에 대한 기존 전역 파일 중첩 규칙을 사용하지 않도록 설정할 수 있습니다. 예를 들어 프로젝트에 다음 설정 코드를 추가하면 이 특정 프로젝트에 대해 전역적으로 존재할 수 있는 모든 pathSegment 규칙이 비활성화됩니다.
"dependentFileProviders": {
"remove": {
"pathSegment": {}
}
}