How do I exclude files/folders from a .NET Core/Standard project?
Just to be complete, if you're using ItemGroup
to exclude folder, then:
<ItemGroup>
<Content Remove="excluded_folder\**" />
<Compile Remove="excluded_folder\**" />
<EmbeddedResource Remove="excluded_folder\**" />
<None Remove="excluded_folder\**" />
</ItemGroup>
Because, I had an angular project with the node_modules
folder which had very long paths and VS kept throwing exceptions. And using <Content Remove="node_modules\**\*" />
didn't work.
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.