Solved

How to define precompiler variable

Posted on 2007-04-07
5
466 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 62

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 62

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 62

Expert Comment

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

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Question! 4 36
Printing 1 50
Please explain the parts of these 2 LINQ expressions 3 26
Winforms -- Capture CTRL+SHIFT+D at the form not working? 3 17
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

813 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

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now