ファイルを入れ子にして表示する

VisualStudioを使っていると、partialクラスを書くときなど、ファイルを入れ子にして表示させたい時があるかもしれません。

フォームアプリではプロジェクトを作成するとForm1.Designer.csがForm1.csの下に表示されていることから、このようなことを考える人は結構いるのではないかと思います。

つまり、こんなかんじです。

3cb25505ec3d595e27b31c5f409df202

しかし、これは意外に面倒です。

とりあえず、試してみてダメだった方法を挙げます。

1. フォルダの時と同じようにドラッグアンドドロップ

できません。これで解決するならわざわざブログにしていません。

2. プロパティにそれっぽい項目ないかな

ありませんでした。

 

この辺りで自力での解決を諦めググりました。

どうやら、.csprojファイルをいじらないといけないようです。

 

皆さんご存知のように、.csprojファイルの実態はxmlファイルです。そして、ソースコード

<Compile Include="Foo.cs" />

というように指定されています。

これを、

<Compile Include="Foo.cs" />

<DependentUpon>Bar.cs</DependentUpon>

</Compile>

というように変更すると、FooはBarの中に入れ子にされて表示されます。

記事の最初の画像の例だと、

<Compile Include="Form1.Child.cs">

<SubType>Form</SubType>

</Compile>

<Compile Include="Form1.cs"

<DependentUpon>Form1.cs</DependentUpon>>

</Compile>

<Compile Include="Form1.Designer.cs">

<DependentUpon>Form1.cs</DependentUpon>

</Compile>

というように指定されています。

また、csprojファイルを弄るとファイルのアイコンを指定できたりと、もっといろいろなことが出来るようです。

 

参考にしたサイト