У меня есть базовая библиотека для поддержки в нескольких версиях. Я использую SVN-переключатель, когда мне нужно работать с другой версией.VS2008: Несколько конфигураций сборки с настройками не работают должным образом
У меня нет нескольких версий решения для тестовых приложений, поэтому я подумал, что для разных версий я мог бы выполнять несколько конфигураций решений/проектов, которые определяют символы для версии, чтобы иметь возможность иметь код, зависящий от версии, в моем тесте ,
В настоящее время у меня есть следующие конфигурации сборки в решении тестового приложения: Debug, Release, DebugV10, ReleaseV10, DebugV15, ReleaseV15. В конфигурациях * V10 и * V15 я создал и выбрал соответствующие конфигурации * V10 и * V15 PROJECT для двух проектов, имеющих тестовый код, зависящий от версии (не для всех проектов, большинство из них запускают обычную конфигурацию Debug/Release в решении -Vx конфигурации).
В этих конфигурациях проектов я ввел соответствующие условные символы компиляции (VERSION10 и VERSION15).
Сейчас в моем коде в проекте я хожу как
#if VERSION10
// do v1.0 stuff
#elif VERSION15
// do v1.5 stuff
#else
// do trunk stuff
#endif
Но, видимо, VS не распознает символы. Даже простой #if DEBUG больше не работает, allthoug определяет постоянную DERBUG, проверяется во всех конфигурациях проекта Debug *.
Это известная вещь? Что я могу сделать с этим?
Как вы определяете символы? Если это просто определено (без какого-либо значения), не следует ли использовать ** #, если определено **? Кроме того, иногда символ распознается правильно, но не визуализируется правильно VS, то есть не окрашивается правильно. –
Я определил символы в свойствах проекта «Сборка» - вкладка в поле для условных символов компиляции. И это не только визуализация, условный код на самом деле не компилируется в ЛЮБОЙ конфигурации, даже нормальный код #if DEBUG в обычной, немодифицированной конфигурации сборки отладки (которая использовалась только для копирования настроек). –
btw: ** # если определено **, не является допустимой директивой в C#. –