Условная компиляция для .NET 4

Possible Duplicate:
Conditional compilation и framework targets

У меня есть код, который работает в .NET 4, но он не работает в .NET 3.5. В .NET 3.5 требуется использовать вызовы взаимодействия с Windows.

Я хотел бы использовать "ifdef", чтобы использовать разные пути к коду в обоих случаях (в конечном итоге я буду осуждать код .NET 3.5).

Есть ли предопределенное значение директивы для определения того, когда код компилируется с .NET 4?

Есть ли хорошая связь со всеми предопределенными директивами (DEBUG, TRACE и т.д.)? Страница ниже содержит только директивы, но не стандартные предопределенные значения:

Директивы препроцессора С#

Ответ 1

Компилятор не знает ни о какой конкретной версии .NET Framework. Все, что он видит, это эталонные сборки. Также нет никаких гарантий, что ваша программа будет работать с версией .NET, на которую вы нацелены. Вполне возможно работать с .NET 4.0 CLR, даже если вы собрали для 2.0.

Вместо этого используйте Environment.Version.

Ответ 2

Я думаю, что это то, что вы ищете:

#if NET40   
...  
#elif NET35  
...  
#else NET20  
...  
#endif