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.