By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,995 Members | 1,057 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,995 IT Pros & Developers. It's quick & easy.

Conditional Compilation dependent on .net-Version

P: n/a
Hello,

I have some code which shall be compiled in .NET v1.1 and v2.0 but
which
has to be different for the two .NET-Versions.

Therefore I need to use a construct like

#if NET_20
<2.0 specific code>
#else
<1.1 specific code>
#endif

which enables the correct code at COMPILE TIME (it is not possible
to decide at runtime for my purposes!).

The question is: is there a define like NET_20 which is set
automatically by
the Visual Studio? Do you see any other chances to handle such
problems?

Thanks!

Jan 10 '07 #1
Share this Question
Share on Google+
3 Replies


P: n/a
<ez*******@gmx.dewrote in message
news:11**********************@i39g2000hsf.googlegr oups.com...
Hello,

I have some code which shall be compiled in .NET v1.1 and v2.0 but
which
has to be different for the two .NET-Versions.

Therefore I need to use a construct like

#if NET_20
<2.0 specific code>
#else
<1.1 specific code>
#endif

which enables the correct code at COMPILE TIME (it is not possible
to decide at runtime for my purposes!).

The question is: is there a define like NET_20 which is set
automatically by
the Visual Studio? Do you see any other chances to handle such
problems?

Thanks!

No , you have to specify your own Conditional Compilation symbol in your project build
settings. You have different projects for 1.1 and 2.0 anyway.

Willy.

Jan 10 '07 #2

P: n/a
If you need to get the CLR version during run time, using:

System.Runtime.InteropServices.RuntimeEnvironment. GetSystemVersion();

Davey,

=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Beer is part of the life.
http://www.lovebeers.com
=-=-=-=-=-=-=-=-=-=-=-=-=-=-
ezmera...@gmx.de wrote:
Hello,

I have some code which shall be compiled in .NET v1.1 and v2.0 but
which
has to be different for the two .NET-Versions.

Therefore I need to use a construct like

#if NET_20
<2.0 specific code>
#else
<1.1 specific code>
#endif

which enables the correct code at COMPILE TIME (it is not possible
to decide at runtime for my purposes!).

The question is: is there a define like NET_20 which is set
automatically by
the Visual Studio? Do you see any other chances to handle such
problems?

Thanks!
Jan 10 '07 #3

P: n/a
"Peter Bromberg [C# MVP]" <pb*******@yahoo.yabbadabbadoo.comwrote in message
news:2F**********************************@microsof t.com...
Here is the complete text of the MSDN2 documentation on this:

/define (Preprocessor Definition) (C# Compiler Options)

The /define option defines name as a symbol in your program.
/define:name[;name2]
Arguments

name, name2
The name of one or more symbols that you want to define.

Remarks

The /define option has the same effect as using a #define preprocessor
directive in your source file.
A symbol remains defined until an #undef directive in the source file
removes the definition or the compiler reaches the end of the file.

You can use symbols created by this option with #if, #else, #elif, and
#endif to compile source files conditionally.

/d is the short form of /define.

You can define multiple symbols with /define by using a semicolon or comma
to separate symbol names. For example:

Copy Code
/define:DEBUG;TUESDAY
The C# compiler itself defines no symbols or macros that you can use in your
source code; all symbol definitions must be user-defined.

Note
The C# #define does not allow a symbol to be given a value, as in languages
such as C++.
For example, #define cannot be used to create a macro or to define a
constant.
If you need to define a constant, use an enum variable. If you want to
create a C++ style macro,
consider alternatives such as generics. Since macros are notoriously
error-prone, C# disallows their use but provides safer alternatives.
To set this compiler option in the Visual Studio development environment
Open the project's Properties page. For more information, see How to: Set
Project Properties (C#, J#).

Click the Build property page.

Modify the Conditional Compilation Symbols property.

For information on how to set this compiler option programmatically, see
DefineConstants.

Example

Copy Code
// preprocessor_define.cs
// compile with: /define:xx
// or uncomment the next line
// #define xx
using System;
public class Test
{
public static void Main()
{
#if (xx)
Console.WriteLine("xx defined");
#else
Console.WriteLine("xx not defined");
#endif
}
}

--
Site: http://www.eggheadcafe.com
UnBlog: http://petesbloggerama.blogspot.com
Short urls & more: http://ittyurl.net


"Michael Nemtsev" wrote:
>Hello Peter Bromberg [C# MVP],

V2? mb smth else? It doesnt work for me

Where have u found it?

---
WBR,
Michael Nemtsev [C# MVP] :: blog: http://spaces.live.com/laflour

"The greatest danger for most of us is not that our aim is too high and we
miss it, but that it is too low and we reach it" (c) Michelangelo

PTry:
P>
P#if V2
Ppublic override void RenderControl(HtmlTextWriter writer)
P{
Pbase.Visible = true;
Pbase.RenderControl(writer);
P}
P#endif
P-Peter
P>
P"ez*******@gmx.de" wrote:
P>
>Hello,

I have some code which shall be compiled in .NET v1.1 and v2.0 but
which
has to be different for the two .NET-Versions.
Therefore I need to use a construct like

#if NET_20
<2.0 specific code>
#else
<1.1 specific code>
#endif
which enables the correct code at COMPILE TIME (it is not possible to
decide at runtime for my purposes!).

The question is: is there a define like NET_20 which is set
automatically by
the Visual Studio? Do you see any other chances to handle such
problems?
Thanks!



True, but IMO you were suggesting "V2" being a pre defined Compiler Symbol which it is not.

Willy.

Jan 10 '07 #4

This discussion thread is closed

Replies have been disabled for this discussion.