Solved

How to define precompiler variable

Posted on 2007-04-07
5
467 Views
Last Modified: 2013-11-26
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?
0
Comment
Question by:brettr
  • 3
  • 2
5 Comments
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 18870080
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
 

Author Comment

by:brettr
ID: 18870121
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
 
LVL 63

Accepted Solution

by:
Fernando Soto earned 500 total points
ID: 18870208
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
 

Author Comment

by:brettr
ID: 18870226
Very cool.  Thanks on the trial and error to find that out.

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

Who else would it be  :o
0
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 18870233
Not a problem; glad to help. ;=)
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

821 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question