Visual Studio의 그룹 파일


78

Visual Studio에서 프로젝트 레이아웃을 정리하는 중이며 .xml 파일을 동일한 이름 의 .cs 파일과 연결하여 솔루션 탐색기에 그룹화되어 표시되도록 하는 해킹, 플러그인 또는 트릭이 있는지 궁금합니다. /탐침.

코드 숨김 파일이 해당 aspx와 연결되는 방식과 유사합니다.

대체 텍스트

어떤 제안이라도 환영합니다. 감사


관련 : .NET Core 프로젝트에서 파일 을 중첩 (그룹화)하는 방법 은 이 답변 을 참조하십시오 .cs.
— DavidRR

답변:


72

프로젝트 파일에서 :

<Compile Include="FileA.cs"/>
<Compile Include="FileA.xml">
  <DependentUpon>FileA.cs</DependentUpon>
</Compile>

또는 VSCommands 2010 확장의 Group Items명령을 사용할 수 있습니다 .

편집 : 파일이 폴더에있는 경우 DependentUpon태그에 폴더 이름을 포함하지 마십시오 . 예를 들어 파일이 Helpers폴더에있는 경우 :

<Compile Include="Helpers\FileA.cs"/>
<Compile Include="Helpers\FileA.xml">
  <DependentUpon>FileA.cs</DependentUpon>
</Compile>

2
완전한! 정말 그것이 가능하다고 생각하지 않았다
— 매트 맥 로린

VS2010 VB 프로젝트에서 XAML 컨트롤에 하위 클래스 (예 : 부분적)를 추가하려는 경우 "모든 파일 표시"를 선택하지 않는 한 하위 파일이 숨겨집니다. 혼란 스럽기 때문에 .xaml.vb를 끝에 추가하면 표시됩니다.
— Rocklan

1
이 게시물을 볼 때까지 VSCommands 그룹 기능을 사용하는 방법에 대해 혼란 스러웠 습니다. VSCommands 그룹 기능을 사용하려면 그룹화하려는 모든 파일을 강조 표시 한 다음 그중 하나를 마우스 오른쪽 버튼으로 클릭 한 다음 그룹을 클릭합니다.
— Chris

1
@Julien, 내가 이것을 투표하려고했지만 기술적으로 이것은 중첩 파일을 수행하기 때문에 더 잘 생각했습니다. 대부분이 인식하지 못했던 것과 다운 투표에 대한 나의 초기 반응에 대한 영감은 이렇게하면 VS의 파일 이름 변경 기능이 깨지기 때문입니다. 자세한 내용과 궁극적으로 이것을하지 않기로 결정한 이유는 여기에서 내 대답을 참조하십시오.
— Mark A. Donohoe

VS2017의 경우 <Compile Update = "FileA.xml"DependentUpon = "FileA.cs"/>를 사용해야했습니다
— Jamie Burns

57

무겁고 독점적 인 VSCommands 확장으로 IDE 속도를 늦추지 않으려면 대신 작은 확장 NestIn을 사용할 수 있습니다 . 파일을 그룹화 / 그룹 해제 할 수 있습니다.


매우 편리하지만 중첩 된 항목의 이름을 바꿀 수 없습니다.
— stian.net

6
또한이 파일 : 파일 중첩 visualstudiogallery.msdn.microsoft.com/…
— Tohid

1
@Tohid, File Nesting Extension에 대한 링크 는 단순한 주석이 되기에는 너무 가치가 있습니다. 답변으로 게시하는 것이 더 좋을 것 같습니다.
— AlexMelw

2

파일이 "최상위"파일 인 간단한 경우 Julien의 설명이 완벽하게 작동합니다. 그러나 DependentUpon 파일이 프로젝트 아래의 폴더에있는 경우에는 다르게 보입니다. 나는 그것이 모호함으로 이어질 수있을 것 같아서 개인적으로 그것을 좋아하지 않지만, 그것은 의견이다.

<Compile Include="DataStructs\CKDTree.cs" />
<Compile Include="DataStructs\CClosestObjects.cs" >
    <DependentUpon>CKDTree.cs</DependentUpon>
</Compile>

종속 항목에는 상위 폴더가 포함되지 않습니다. 이것은 VS2013에서 사실입니다 ... 아마도 이전 버전에서는 사실이지만 확인하지는 않았습니다.


감사합니다. "누락 된"폴더 비트는 알아두면 좋습니다. VS2013에서 올바르게 나타나지 않는 이유가 궁금합니다.
— John Korsnes 2014

관련 '부모'파일 (sans 경로)이 '자식'파일의 형제이고 하위가 경로를 지정한다고 가정하기 때문에 필요하지 않다고 생각합니다. 다른 위치에 두 번째 CKDTree.cs 파일을 추가 한 다음 해당 다른 위치에 정확히 동일한 DependentUpon요소 를 사용하여 자식을 만드는 간단한 테스트를 통해이 가설을 확인할 수 있습니다. 그래도 아래의 답변에서 언급했듯이 VS의 파일 이름 변경 기능이 손상되므로 조심하십시오.
— Mark A. Donohoe

1

Visual Studio 용 파일 중첩 확장은 좋은 것입니다. 이 답변을 작성하는 시점에 약 500K 다운로드가 있습니다. 나는 그것을 내 VS 2015에 개인적으로 추가했고 잘 작동했습니다 (아직 VS 2017에서 시도하지 않았습니다).


0

사람들이 알고 있는지 확실하지 않지만 이와 같은 중첩 파일은 적어도 새 중첩 파일도 부분 클래스 인 경우 루트 파일의 이름을 바꾸는 VS의 기능을 손상시키는 것 같습니다. 예를 들어 여기에 우리가 만든 트리가 있습니다.

MainWindow.xaml
    MainWindow.xaml.cs
    MainWindow.Commands.cs

MainWindow.Commands.cs는 MainWindow.xaml.cs와 동일한 MainWindow의 또 다른 부분 클래스입니다. 그러나 종속 파일의 이름을 자동으로 바꾸는 대신 MainWindow.xaml의 이름을 바꾸려고하면 예외가 발생합니다.

완전성을 위해 파일 이름을 지정하려고 시도했지만 MainWindow.xaml.Commands.cs작동하지 않았습니다.

추가 '명령'파일이 없으면 이름 바꾸기는 물론 잘 작동합니다.

MainWindow.xaml
    MainWindow.xaml.cs

어쨌든 이것은 우리가 이와 같은 중첩 파일을 포기할 충분한 이유였습니다. 이름을 바꿀 수 없으면 그럴 가치가 없습니다.


부분 클래스 (루트 1 개, 자식 2 개)로 이것을 테스트했는데 루트 이름을 바꾸는 데 오류가 발생하지 않았습니다. VS 2015
— ATD

나는 내가 시간에 3분의 2,012을 사용하여 한 생각 2015 년 다시 확인해야합니다
— 마크 A. Donohoe와에게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.