2010-04-16 83 views

回答

11

您在問題中存在不連續性。你在問一個編譯符號,所以只有在設計時才存在,並且在運行時檢測一個條件。所以你的問題是你究竟在追求哪一個?

如果您想在運行時知道您是否在CF下,請檢查Environment.OSVersion.Platform屬性以查看它是否爲WinCE。

if(Environment.OSVersion.Platform == PlatformID.WinCE) 
{ 
    // this is CF 
} 

在編譯時它並不那麼直截了當。默認的項目嚮導添加編譯符號「無憂」爲PPC/WinMo的項目,「WindowsCE的」爲WinCE的項目和「WINDOWS_PHONE」爲Phone7的項目,所以你可以做這樣的事情:

#if WindowsCE || PocketPC || WINDOWS_PHONE 
// this is CF 
#endif 

但還有什麼可說的開發人員不能刪除該符號(或將其添加到桌面項目中)。

0

或者用簡單的話:

的基本思想是用#如果編譯器指令每個框架的版本來裝點你的代碼?

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

線程here回答你的問題。