Компилятор C# устанавливает версию или константы платформы?

Существуют ли какие-либо предопределенные константы в компиляторе C# для определения целевой версии платформы?

Я могу установить платформу в параметрах проекта, но как мне написать единый источник для.NET 2 и.NET 3.5?

Изменить: я действительно хочу написать код один раз и быть в состоянии переключить поведение с чем-то вроде #if CLR_VERSION35 и затем другие конфигурации.

Обратный вопрос: если я сделаю конфигурации CLR35 и CLR20, возможно ли выбрать целевую платформу на основе этого? Опция недоступна в VS2008, и я пока немного знаю о MSBUILD.

3 ответа

Решение

.NET Framework 3.5 - это расширенный набор 2.0, поэтому все приложения 2.0 должны работать на 3.5 без изменений. Поскольку это надмножество, нет никакого способа отступить, чтобы не использовать функциональность 3.5, если ваше приложение оказывается на 2.0, но в любом случае это не имеет смысла.

Если вам нужно нацелиться на 2.0, и вы можете написать то, что вам нужно, в 2.0, то это путь, 3.5 все равно будет нормально работать с вашим приложением. По сути, вы должны написать для наименьшего общего знаменателя или включить распространяемые среды выполнения 3.5 вместе со своим установщиком, чтобы убедиться, что у вашего клиента есть правильная среда для вашего приложения.

В VS2008 вы можете установить целевую платформу в свойствах проекта (обозреватель решений, щелкните правой кнопкой мыши проект). У вас также есть возможность при создании нового проекта, в правом верхнем углу окна нового проекта есть раскрывающийся список.

Кроме DEBUG и RELEASE, насколько я знаю, не все. Я бы сохранил поиск и просто определил свои собственные в свойствах проекта, вкладку "Сборка", "Условные символы компиляции".

Там больше информации на этом блоге, если это что-то использовать

Другие вопросы по тегам