Skip to main content

What is the Difference between Build, Rebuild and Clean in Visual Studio?

If you are a Microsoft Asp.Net Developer then usually you came across this words like Build, Rebuild and Clean.

This article gives you explanation about Difference between Build, Rebuild and Clean


If you are using Visual studio you might have question that what is difference between Build, Rebuild and Clean ? here we are going to understand the diversity between them.

Build Solution :
When we build any solution then Visual studio will build/compile all assemblies (Dlls and EXE’s) that are changed, it is basically incremental or partial process in which only CHANGED assemblies are compiled if there is no changed assemblies it won’t get build

Rebuild Solution:
It is full compiled case, in which all assemblies (either changed or not) are deleted and recompiled again, irrespective of changed or not

Clean Solution:
It is not compile case, it just delete all assemblies (Dlls and EXE’s) from folder but not compiled them again, it remove all compiled files from previous build

Hope you understand this simple article

Difference between .Net DLL and Normal DLL file

DLL is stands for Dynamic Link Library. DLL is a file format which holds multiple codes and procedures for windows applications. Generally DLL files are created so that multiple application can use it at the same time. It has common code which may be used by multiple programs so it can reduce the disk space, load faster and consume less memory. DLLs can be converted to static libraries by using MSIL (Microsoft Intermediate Language) diassempler. It is very similar to .EXE file but it can not be execute directly like EXE, but holds same information like code, data and resources.

What is .NET dll file?

When we create a .NET DLL or Assemply in .Net Languages like VB.Net or C#.Net it will create a Managed Assembly. Managed Assembly is the component standard specified by Microsoft .Net. So .Net DLL (assemblies) are only understandable by Microsoft.Net Framework and can be used only in Microsoft.Net managed applications. A managed assemly contains managed code only and it can be executed by .Net Runtime. While when we are creating a C++ DLL then it will generated a win32 com DLL. So if we want to use that DLL in out .Net application the Visual Studio will automatically creates an INTEROP for that to call unmanaged dll from managed code.

We if want to use .NET DLL files into our application then we need to copy the DLL file into BIN folder or add a reference for that DLL file.

What is a Normal DLL file?

Normal DLL file contians code that we can use in our application or program. That code can be written as a separete modules (common functions) so other application or module can use it. Other application is may be .EXE file or .DLL file. It is like a libraries which can holds code, data or resources and can be used by multiple application at the same time. It will help us to modulirse our code, reuse the code, we can do more efficent memoty usage. If we are using common DLL for multiple application then it will consume less disk space and also load faster into memory.

We if want to use Normal DLL files into our application then we need to register it first using the “regsvg32” command or tool.

MIME for DLL files is : application/x-msdownload

What are the Differences between the Debug class and Trace class?

Debug and Trace both classes are included in Systems.Diagnostics namespace and have very similar methods. The main difference is that call to Debug class is included in Debug mode only while call to Trace class will be included in Debug as well as Release mode also.

So in short we can say it is advisable to use Debug at the time of application development, while Trace option is used at the time of application deployment, like we can trace any error and write it into log files etc.

What is the differences between a Debug and Release build?

When we are building any .Net project there are two configuration we can select 1 is Debug and another is for Release, While we are developing an application default mode is Debug and programmers keeps is Debug mode for debugging code step by step or line by line. Once project is completed we need to change it to Release mode before generating final build like DLL, EXE or published code.

The Debug mode does not optimize the binary it produces because the relationship between source code and generated instructions is more complex. This allows breakpoints to be set accurately and allows a programmer to step through the code one line at a time. The Debug configuration of your program is compiled with full symbolic debug information which help the debugger figure out where it is in the source code.

Normally Debug builds are not optimized and it has debugging symbols, while the code build in the Release mode is more optimized, It is very less in size and more faster then Debug mode.

What is the role of .pdb files ?
PDB is stands for Program Database File, it contains the debug information about the application depending on the compiler option that we have used. It holds application state information and debugging information that allows incremental linking of a Debug configuration of out application. PDB file is created when we are running a C# application in Debug mode.

We can set the debug mode in web.config file as shown below

// For Debug mode

<system.web>
<compilation debug="true">

or

// For Release mode

<system.web>
<compilation debug="false">

Happy Debugging