Hide files in .csproj without excluding them from build
Asked Answered
G

2

25

Is it possible to hide files/folders in .net core csproj without excluding them from build? I have a folder containing generated files which I would rather see they are not visible inside Solution Explorer in Visual Studio.

Gildus answered 10/8, 2017 at 12:4 Comment(0)
I
48

You can set the Visible="false" attribute on the items.

For an SDK-based project (.net core / asp.net core templates), you could add e.g.:

<ItemGroup>
  <Content Update="**/*.css" Visible="false" />
</ItemGroup>

Depending on your project type (=> defaults), you might have to replace Content with None for the particular type, or even Compile for generated code files.

Insignificant answered 10/8, 2017 at 12:11 Comment(7)
Is it possible to hide folder too? This hides all files in folder Generated, but the empty folder is still visible... <Compile Update="Generated\**" Visible="false" />Gildus
To my knowledge, this is not possible. Many new tools try to autogenerate into obj ($(BaseIntermediateOutputPath)) and include the items during the build and not as static ("root level") items using the Link metadata... But yes I also have stray dist / css folders etc.Insignificant
I find that setting Visible to false means that VS will not trigger a build if one of these files changes. developercommunity.visualstudio.com/content/problem/140935/…Bk
Is this supposed to work with .Net Core projects? I added the Visible tag and the file still shows in solution explorer.Archpriest
For NetCore and NetStandard It would not work for me unless I used None. <None Remove="**/*.asmdef" Visible="false"/> Politic
@CodieMorgan there is a difference between hiding files and removing them from the project. <None Remove=".. excludes files from the project (for which you don't need a Visible attribute).Insignificant
By me it isn't available as attribute only as an element <Visible>False</visible>Hunnish
M
0

Thanks to Martin answer, I found a way to apply it to a whole folder using **\**. For example for an ASP.NET Core wwwroot\Scripts folder which contains files compiled by TypeScript (TypeScriptCompile):

    <ItemGroup>
        <TypeScriptCompile Update="wwwroot\Scripts\**\**" Visible="False" />
        <Content Update="wwwroot\Scripts\**\**" Visible="False" />
    </ItemGroup>

As his answer noted, you can add more type in there like None.

Main answered 10/1, 2022 at 16:16 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.