Есть ли AC# Precompiler Define для версии CLR
Вопрос
Мне нужно усвоить код условным по версии CLR.
Например, есть код, который мне нужен только в CLR 2 (.NET 3.5 VS2008), а не в CLR 4 (.NET 4 VS2010)
Есть ли директива для предварительногокомпьюлеров для текущей версии CLR, которую я могу использовать в предложении #IF?
Спасибо.
Решение
Не так, как я знаю.
Попробуйте использовать свой собственный, например:
#if CLR_V2
#if CLR_V4
#error You can't define CLR_V2 and CLR_V4 at the same time
#endif
code for clr 2
#elif CLR_V4
code for clr 4
#else
#error Define either CLR_V2 or CLR_V4 to compile
#endif
И затем вы можете определить CLR_V2 и/или CLR_V4 в окне свойств проекта Visual Studio или аргументы командной строки CSC.
Другие советы
Вы всегда можете добавить что -то в свой скрипт MSBuild, который проверяет версию CLR, а затем условно определяет и передает символ препроцессора компилятору, который можно проверить внутри кода с #IF.
да это так Условные директивы они выглядят как предварительные материалы C
РЕДАКТИРОВАТЬ: Полностью неправильно прочитайте этот вопрос - время для перерыва
Согласно с здесь ответ нет. Анкет Однако один трюк, который мы используем, состоит в том, чтобы поместить конкретный код версии в сборки, которые загружаются во время выполнения. Затем вы можете получить версию CLR во время выполнения System.Runtime.InterOpservices.RuntimeEnvironment.GetRuntimedIrectory ().
Специфический код версии составлен с использованием объекта таргетинга, доступного с C#3.5 и далее.