Search code examples
c#compiler-directives

#if DEBUG directive


   #if DEBUG
                        mailMessage = new MailMessage("someEmail.com", "someEmail.com", subject, messsageBody);
   #else
                        mailMessage = new MailMessage(Membership.GetUser().Email, cppAccount.Email, subject, messsageBody);
   #endif

I have the above code but even when I publish on release it still uses the debug statement. This is an mvc4 c# project and this code is in one of my model classes.


Solution

  • That is not the best way to do what you are trying. You should do this in web.config with an app setting for example.

    <add key="MailMessageEnabled" value="true" />
    

    And then in your cs file do something like -

    bool isEnabled = bool.Parse(ConfigurationManager.AppSettings["MailMessageEnabled"]);
    mailMessage = isEnabled ? new MailMessage(Membership.GetUser().Email, cppAccount.Email, subject, messsageBody) 
                : new MailMessage("someEmail.com", "someEmail.com", subject, messsageBody);
    

    And you can have the value of the config to be true in default web config and false in release web config