У вас есть разрыв в вашем вопросе. Вы спрашиваете о символе компиляции, то есть о чем-то, что существует только во время разработки, и обнаруживаете условие во время работы. Таким образом, вопрос для вас, какой из них вы на самом деле после?
Если вы хотите узнать во время выполнения, находитесь ли вы в CF, то проверьте свойство Environment.OSVersion.Platform, чтобы узнать, является ли он WinCE.
if(Environment.OSVersion.Platform == PlatformID.WinCE)
{
// this is CF
}
Во время компиляции это не так просто. Мастер проектов по умолчанию добавляет символы компиляции «PocketPC» для проектов PPC / WinMo, «WindowsCE» для проектов WinCE и «WINDOWS_PHONE» для проектов Phone7, чтобы вы могли сделать что-то вроде этого:
#if WindowsCE || PocketPC || WINDOWS_PHONE
// this is CF
#endif
Но нельзя сказать, что разработчик не может удалить этот символ (или добавить его в настольный проект).