I neeed to create multiple versions of my project using configuration just like we do with #define
, #if
, #endif
.
The down side of using these preprocessor directives is that I need to define symbols in almost every file of the project but I want to handle this thing by my build configurations.
I am not even sure if Build Configurations will help me to do this.
What I want is if I create a configuration with name "Development" and other with name "QA", my code would look like:
if #Development or if $QA
Kindly guide me towards achieving this.
Configuration Manager exist for this reason.
- Go to the Configuration Manager and create a New Configuration
copying from the predefined DEBUG configuration
- Name the configuration DEVELOPMENT and apply to all projects
- Select as Active Configuration the DEVELOPMENT configuration (should already be the
active one)
- Go to the properties page of each project requiring
#if DEVELOPMENT
conditional compile and insert the DEVELOPMENT symbol in first textbox of the BUILD tab
Now each of your projects can use the #if DEVELOPMENT preprocessor directive
If you need this also for RELEASE repeat the above steps but copy from predefined RELEASE configuration and give a different NAME
Now switching from a configuration with or without the DEVELOPMENT symbol defined could be done directly from the Solution Configurations combo Tool present in the Standard Toolbar of Visual Studio without editing each project.
You can also view MSDN article How to: Create and Edit Configurations
In addition to Michael Freidgeim´s solution you can use attribute conditional
for central initalisation operations or other void functions:
[Conditional("DEVELOPMENT")]
public static void InitDemo()
{
Models.LogFile.ErrorLog("This is a Development Version!");
// init settings
}
Found here: http://msdn.microsoft.com/de-de/library/4xssyw96%28v=vs.80%29.aspx