问题
Possible Duplicate:
Conditional compilation and framework targets
I have some code that works in .NET 4, but it does not work in .NET 3.5. In .NET 3.5 it requires to use interop calls to Windows.
I would like using a "ifdef" to use a different code path in both cases (eventually I will deprecate the .NET 3.5 code).
Is there a pre-defined directive value to identify when the code is compiled with .NET 4?
Is there a good link with all the predefined directives (DEBUG
, TRACE
, etc.)? The page below only gives the directives, but not the standard predefined values:
C# Preprocessor Directives
回答1:
The compiler isn't aware of any particular .NET Framework version. All it sees is the reference assemblies. Nor is there any guarantee that your program will run with the .NET version that you target. It is quite possible to run with the .NET 4.0 CLR even if you built for 2.0.
Use Environment.Version
instead.
回答2:
I think this is what you are looking for:
#if NET40
...
#elif NET35
...
#else NET20
...
#endif
来源:https://stackoverflow.com/questions/4890095/conditional-compilation-for-net-4