VisualStudioであるフォルダ以下の全てのソースコードをリンクとしてプロジェクトに取り込みたいとき

VisualStudioでソースコードを共有する場合、ソースコードをプロジェクトにリンクする機能がある。
しかしあるフォルダ以下を全てリンクしたい時、フォルダ階層やソースコードの数が変化するとその度にプロジェクトを変更しなければならない。これはかなり面倒くさい。

この場合csprojファイルを直接編集することで、特定のフォルダ以下の全てのソースコードを再帰的にリンクとしてプロジェクトに取り込ませることができる。
csprojファイルをエディタなどで開いて、以下の行を追加する。

  <ItemGroup>
    <Content Include="..\..\src\TestClass\**\*.*">
      <Link>TestClass\%(RecursiveDir)%(FileName)%(Extension)</Link>
    </Content>
  </ItemGroup>

この場合はcsprojファイルを起点にして2つ上のフォルダのsrc\TestClassフォルダ以下の全てのファイルをリンクとして取り込める。

  <ItemGroup>
    <Content Include="..\..\src\TestClass\**\*.cs">
      <Link>TestClass\%(RecursiveDir)%(FileName)%(Extension)</Link>
    </Content>
  </ItemGroup>

としてcsファイルだけをリンクしたり、

  <ItemGroup>
    <Content Include="..\..\src\TestClass\**\*.*" Exclude="..\..\src\TestClass\**\Test.cs">
      <Link>TestClass\%(RecursiveDir)%(FileName)%(Extension)</Link>
    </Content>
  </ItemGroup>

としてTest.csだけ省いたりすることができる。