In Visual Studio, what does the "Clean" command do?

Visual StudioBuild Process

Visual Studio Problem Overview


You know, the one that outputs this=>

>------ Clean started: Project: Foo.Bar, Configuration: Debug Any CPU ------
========== Clean: 1 succeeded, 0 failed, 0 skipped ==========

What it is cleaning?

Visual Studio Solutions


Solution 1 - Visual Studio

The output directories - it removes the code that it's previously built.

It doesn't remove the bin/obj directories themselves (or the Debug/Release directories beneath them), just the actual .exe, .dll, etc files. Unfortunately this makes it less useful for my usual use of cleaning up output directories: when I want to zip up the source code. As the Clean action doesn't do this, I usually just delete the bin and obj directories directly.

Solution 2 - Visual Studio

Why not look for yourself? Open up Microsoft.Common.Targets (found under %windir%\Microsoft.NET) and you'll see a section like so:

<!--
============================================================
                                    Clean

Delete all intermediate and final build outputs.
============================================================
-->
<PropertyGroup>
    <CleanDependsOn>
        BeforeClean;
        CleanReferencedProjects;
        UnmanagedUnregistration;
        CoreClean;
        CleanPublishFolder;
        AfterClean
    </CleanDependsOn>
</PropertyGroup>
<Target
    Name="Clean"
    Condition=" '$(_InvalidConfigurationWarning)' != 'true' "
    DependsOnTargets="$(CleanDependsOn)" />

Keep reading to see exactly what each of those sub-targets does. (Some, of course, are just stubs for the user to override).

Personally, I like to see what shenanigans my fancy-pants IDE is up to behind my back. To this end, I'd recommend increasing the amount of info written to the Output window. Tools -> Options -> Projects & Solutions -> Build & Run -> MSBuild verbosity -> change from "Minimal" to "Normal" or "Detailed."

Try your Clean operation again and watch the output now! Correlating what you see to the *.targets files is a good way to start learning MSBuild.

Solution 3 - Visual Studio

It goes through your output directories and deletes any build related files in them.

I think you can also configure this by going to the Project's properties in

Configuration Properties -> General, under "Extensions to Delete on Clean"

Solution 4 - Visual Studio

removes all the files associated with the build, output directories

Solution 5 - Visual Studio

People use a 'clean' to force a complete rebuild from source. Your compiler doesn't rebuild every file every time if it hasn't changed.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionArnis LapsaView Question on Stackoverflow
Solution 1 - Visual StudioJon SkeetView Answer on Stackoverflow
Solution 2 - Visual StudioRichard BergView Answer on Stackoverflow
Solution 3 - Visual StudioJosephView Answer on Stackoverflow
Solution 4 - Visual StudiovehomzzzView Answer on Stackoverflow
Solution 5 - Visual StudioAdam CaseyView Answer on Stackoverflow