Visual Studio: Build, Rebuild, Clean and Batch Build
Tags: dotnet, visualstudio, debug, devops
Published: 2023-03-12 16:45:55

---
title: Visual Studio: Build, Rebuild, Clean and Batch Build
published: true
description: 
tags: dotnet, visualstudio, debug, devops
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2023-03-12 15:44 +0000
---
####Introduction
In this blog post we will look into the **build configuration** of our *project* or *solution* in Visual Studio application.

![Visual Studio Logo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kpq78szvzjeqn4pngepa.png)

####Build Configuration
The build solution will always perform an incremental build i.e. it will only build those files *(dll and .exe)* which have changed.

When we develop our .NET application in Visual Studio we see following build configuration:
* Debug
* Release
![VS Build Config](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u2xjlv4vuwmwzwgpeciu.png)
![Debug Release Folder](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ey86zg3l3uejft6vxul8.png)
*Now, if we look into more details...*

####Debug
Debug mode allows developer to break the execution of program and step through the code. Compiled code *dll* in debug is not optimized. Therefore, size of *dll* file in debug mode is comparatively larger than release mode. Some additional instructions are added to enable the developer to set a breakpoint on every source code line like *"symbolic information"*. For example, adding following code block will only execute in debug and in release mode this code block will get ignored.
```
#if DEBUG  
Console.WriteLine("Hello! This is Debug Mode");  
#endif 
```
####Release
This mode is for final deployment of the source code on production server. Release mode *dll* file contains optimized code, and it is generated for end user. Debugging symbol information is also gets omitted from the *dll* file in this mode.

![Solution Structure](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aads500ia3n107fp47bn.png)

####Rebuild Solution
Rebuild solution will delete all the files *(dll and .exe)* or "bin and obj" and perform build from scratch irrespective of whether the files are modified or not. Please note that "Rebuild" will clean then build each project, one at a time, rather than cleaning all and then building all projects.

####Clean Solution
The clean solution will delete all the compiled files *(dll and .exe)* from *"bin and obj"* directories. You may notice that not all of the files are actually removed from the project folder. This might happen because *clean* only removes files that are associated with a build and not everything else.

####Build vs. Rebuild vs. Clean
The difference lies in what happens in each build configuration 
for every projects.

For example, if the solution has two projects: Project A & Project B and you perform rebuild operation, it will take Project A, clean the compiled files for Project A, and build it. After that, it will take Project B, clean the files for Project B, and build it.

On the other hand, if you do a clean and then build separately, it will first clean all compiled files *(dlls and .exe)* for both the projects – Project A & Project B and then it will build Project A first then Project B.

####Batch Build
![Batch Build](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ovzuzk31fhyc8yzt1lef.png)

When we build our project our project in visual studio we can only build it into one configuration mode at a time like *Debug* or *Release* etc. So, if we want to **build our project into multiple configuration** i.e. *Debug and Release* or **build the project for multiple platforms**, such as *x86 and x64*, **all at once at the same time** then we can do that with **Batch Build** operation. *Batch build allows you to build multiple configurations with a single command instead of building them individually.*

To perform a batch build, you can go to the "Build" menu, select "Batch Build," and then select the configurations and platforms that you want to build.

####Concluiton
In summary, it is important to keep in mind that what happens in each build configuration in Visual Studio and based on our requirement we can select how our project or solution can be build.