Условная компиляция для .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