Условная компиляция для.NET 4
Возможный дубликат:
Условная компиляция C# и цели платформы
У меня есть некоторый код, который работает в.NET 4, но не работает в.NET 3.5, в.NET 3.5 требуется использовать вызовы взаимодействия с Windows.
Я хотел бы использовать "ifdef", чтобы использовать разные пути кода в обоих случаях (в конце концов, я буду осуждать код.NET 3.5).
Есть ли предопределенное значение директивы для определения того, когда код компилируется с.NET4? Есть ли хорошая связь со всеми предопределенными директивами (DEBUG, TRACE,...)? Ссылка ниже дает только директивы, но не стандартные предопределенные значения:
http://msdn.microsoft.com/en-us/library/ed8yd1ha(v=VS.100).aspx
2 ответа
Компилятор не знает ни о какой конкретной версии.NET Framework. Все, что он видит, это эталонные сборки. Также нет никаких гарантий, что ваша программа будет работать с версией.NET, на которую вы нацелены. Вполне возможно работать с.NET 4.0 CLR, даже если вы собрали для 2.0
использование Environment.Version
вместо.
Я думаю, это то, что вы ищете:
#if NET40
...
#elif NET35
...
#else NET20
...
#endif