这两个版本的.NET之间的兼容代码存在许多运行时差异。
到目前为止,这是一个差异列表:
我们是否还有其他要添加的内容?
答案 0 :(得分:7)
根据您的要求,MSDN上有一篇Differences between .NET Compact Framework and .NET Framework文章。
答案 1 :(得分:2)
从Mitchel Sellers的名单中,这些是使Compact紧张有趣的一些特征......很有趣。
.NET Compact Framework的公共语言运行库大约是完整.NET Framework公共语言运行库大小的12%。
Windows Embedded CE操作系统中不存在当前目录的功能。
Windows Embedded CE将指定的文件名解析为没有路径信息,因为它位于设备的根目录中,而不是在应用程序目录中。
.NET Compact Framework处理以file://为前缀的统一资源标识符(URI)字符串,与完整的.NET Framework不同。
由于大小和性能方面的考虑,.NET Compact Framework不支持使用BinaryFormatter进行二进制序列化,也不支持使用SoapFormatter进行SOAP序列化。
并非所有套接字选项都受支持。
由于设备I / O出现在RAM中,因此无法设置或访问文件和目录属性。
控制台仅在硬件供应商的选项中提供。
只有12%的.NET Framework。我巧妙地发现这意味着88%的缺失。你可能会想要一些。
非常值得注意的是,这么多被省略或扭曲,因为它不适合几百MB;相比之下,传统移动设备通常不到10 MB。
答案 2 :(得分:1)
当我不得不将CF应用程序移植到完整的.net框架时,我注意到了一些差异。
CF中标签和树视图的默认字体较大
当CF中的标签被禁用时,它只是变灰了(完整的.net framewark用另一种颜色勾勒出文字)
答案 3 :(得分:1)
位图(真正的所有图像派生类)在how their resources are cleaned up中表现不同。
答案 4 :(得分:1)
在
的桌面上以不同的格式返回装配路径System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
这将返回Win CE下的正常路径,但在桌面框架上提供了一个URL(file:/// c:/ ...)。物业
System.Reflection.Assembly.GetExecutingAssembly().Location
在桌面框架中返回正常路径(C:...),但在Compact Framework中根本不可用。
这是一个返回应用程序所在文件夹的属性:
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);
}
}