2008-12-05 53 views
15

這兩個.NET版本在兼容代碼中存在許多運行時差異。你知道Compact和Full Framework代碼之間的任何運行時差異嗎?

這裏是差異列表到目前爲止:

  • Graphics.DrawRectangle - 1個像素
  • Graphics.DrawString不同 - 若與兩個StringAlignments設置爲中心的StringFormat使用丟失的換行。
  • 大多數文件操作 - 緊湊型框架都需要一個完整的路徑
  • The status of a socket after BeginAccept
  • (在WinCE中5至少),你不能使用的插座與超時同步發送數據(不是好的,但你的風險掛起)
  • 位圖(所有圖像派生類真的)在how their resources are cleaned up中表現不同。 - ctacke
  • 在CF標籤和樹視圖的默認字體是更大 - Darwyn
  • 當標籤在CF中禁用它只是變灰(完整的.NET framewark概述了另一種顏色的文本) - Darwyn
  • 大會路徑返回不同的格式在桌面上從System.Reflection.Assembly.GetExecutingAssembly()的GetName()基本代碼 - 。Qwertie

難道我們也有更多的補充?

+0

我在12月怎麼沒有高興呢? – ctacke 2009-10-06 02:38:06

回答

1

我注意到一些差異,當我必須將CF應用程序移植到完整的.net框架。

  • 在CF的標籤和樹視圖的默認字體是大

  • 當標籤在CF中禁用它只是變灰(完整的.NET framewark概述了另一種顏色的文本)

1

大會路徑返回在桌面上的一個不同的格式從

System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase 

這將返回在Win CE正常路徑,而是給出了一個網址(文件:/// C:/ ...)上桌面框架。該物業

System.Reflection.Assembly.GetExecutingAssembly().Location 

返回正常路徑(C:...)在桌面框架,但目前還無法提供所有在緊湊型框架。

這裏是返回您的應用程序所在的文件夾的屬性:

public static string AppFolder 
{ 
    get { 
     #if !WindowsCE && !PocketPC 
     string exeFile = System.Reflection.Assembly.GetExecutingAssembly().Location; 
     #else 
     // This returns a normal path under CE, but gives a URL (file:/...) on the desktop 
     string exeFile = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase; 
     if (exeFile.StartsWith("file:///")) 
      exeFile = exeFile.Substring("file:///".Length); 
     #endif 
     return System.IO.Path.GetDirectoryName(exeFile); 
    } 
} 
2

從米切爾賣家名單,這些都是一些使緊湊型progreamming ......有趣的特性。

.NET Compact Framework的公共語言運行時大約是完整的.NET Framework公共語言運行時的12%。

當前目錄的功能在Windows Embedded CE操作系統中不存在。

Windows Embedded CE將沒有路徑信息的文件名解析爲位於設備的根目錄中,而不是位於應用程序目錄中。

.NET Compact Framework以不同於完整.NET Framework的方式處理以file://爲前綴的統一資源標識符(URI)字符串。

由於大小和性能方面的考慮,.NET Compact Framework不支持使用BinaryFormatter的二進制序列化或使用SoapFormatter的SOAP序列化。

並非所有套接字選項都受支持。

由於設備I/O出現在RAM中,因此無法設置或訪問文件和目錄屬性。


控制檯僅在硬件供應商的選項提供。

只有12%的.NET Framework。我巧妙地發現,這意味着88%的人失蹤了。你可能會想要一些。

非常顯着的是,這麼多被忽略或扭曲,因爲它不適合幾百MB;而經典移動設備通常少於10 MB。

+0

我真的開始懷疑這個剔除是多麼的合乎邏輯。我的意思是它包含Path.GetPathRoot()時它只有返回「\」是多麼明智。 – Quibblesome 2008-12-25 18:25:20