Есть ли символ компиляции для обнаружения компактной структуры? - PullRequest
3 голосов
/ 17 апреля 2010

Есть ли символ компиляции, чтобы определить, работает ли он на платформе компактного фреймворка

Ответы [ 2 ]

11 голосов
/ 17 апреля 2010

У вас есть разрыв в вашем вопросе. Вы спрашиваете о символе компиляции, то есть о чем-то, что существует только во время разработки, и обнаруживаете условие во время работы. Таким образом, вопрос для вас, какой из них вы на самом деле после?

Если вы хотите узнать во время выполнения, находитесь ли вы в 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

Но нельзя сказать, что разработчик не может удалить этот символ (или добавить его в настольный проект).

0 голосов
/ 15 марта 2014

Или простыми словами:

Основная идея заключается в том, чтобы украсить ваш код директивами компилятора #if для каждой версии фреймворка?

#if CFNET
// .net CF code
#else
// .net code
#endif

Тема здесь отвечает на ваш вопрос.

...