How to define precompiler variable

I'd like to set a precompiler variable in my project settings rather than a config file.  In the project properties, I've added this:

/d: MYVAR=true

In my code, I do this:

#if MYVAR
  //variable is true
#else
  //variable is not true
#endif

I always hit the second conditional, where it is not true.  But I don't know if .NET even sees MYVAR.  How can I set the variable as a precompiler?
brettrAsked:
Who is Participating?
 
Fernando SotoConnect With a Mentor RetiredCommented:
Hi brettr;

I did not know that was there. It is another way to set the precompile variables. But it seems to have a bug or the documentation is wrong. So this is how it works. To define one or more variables place the /define or the shortcut /d at the start of the text box. The the documentation states to place a : next but that seems to stop the first variable from being defined. So for example if you had the following in the "Conditional Compilation Symbols" text box /define:MYVAR;MYVAR2 the MYVAR would not be defined but MYVAR2 would be defined. If you leave out the : then both work OK. /Define MYVAR;MYVAR2 will work fine for both.

So in your case this will work:
/d MYVAR
/define MYVAR

But the following will not work
/d:MYVAR
/define:MYVAR

That's Microsoft for you. ;=)

Fernando
0
 
Fernando SotoRetiredCommented:
Hi brettr;

Not sure what you are trying to do but this is how the use a precompile variable

At the top of your source file place the variable you want to define like so:

#define MYVAR

Then when you want the compiler to use one set of statements depending on the use of that variable
you do the following.
        private void Form1_Load(object sender, EventArgs e)
        {
#if MYVAR
            MessageBox.Show("My Var is defined");
#else
            MessageBox.Show("My Var is NOT defined");
#endif
        }

Because you have the #define MYVAR at the top of the source file the above will always print "My Var is defined".

If you do not have a statement at the top of the source file #define MYVAR or you have the statement #undef  MYVAR then the program will always display the message box with the message "My Var is NOT defined".

If this is what your question is about fine otherwise let me know.

Fernando
0
 
brettrAuthor Commented:
Yes - that worked.

What than do the "Conditional Compilation Symbols" in the project properties Build tab do? That's where I was setting my variable previously but it was never recognized.
0
 
brettrAuthor Commented:
Very cool.  Thanks on the trial and error to find that out.

"That's Microsoft for you. ;=)"

Who else would it be  :o
0
 
Fernando SotoRetiredCommented:
Not a problem; glad to help. ;=)
0
All Courses

From novice to tech pro — start learning today.