How do I exclude files/folders from a .NET Core/Standard project?

Gigi picture Gigi · Apr 2, 2017 · Viewed 23.1k times · Source

In .NET Core and .NET Standard projects, if you put files and folders within the project directory, they are automatically picked up by Visual Studio; essentially they are part of the project.

What if I have files/folders in there that aren't really part of the project itself (in terms of code or content) - short of removing them altogether, is there a way I can exclude them from the project as I can with projects targeting the full .NET Framework?

Answer

Martin Ullrich picture Martin Ullrich · Apr 5, 2017

There are also a few things you can do in the csproj files to make sure the files aren't picked up:

1) Make sure none of the globbing patterns that look for "project items" pick up the files:

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);your_nonproj.file;a\**\*.pattern</DefaultItemExcludes>
</PropertyGroup>

2) Remove items explicitly:

<ItemGroup>
  <None Remove="hidden.file" />
  <Content Remove="wwwroot\lib\**\*" />
</ItemGroup>

Note that, on large directories (number of files), using DefaultItemExcludes with the folder\** pattern is a lot faster since msbuild will skip walking the directory entirely. Using a remove for this will still let msbuild spend quite some time discovering files.