本主题并没有囊括两个框架间的所有差异,而是列出开发应用程序所需的一些重要差异。
应用程序域
.NET Compact Framework 目前不支持将程序集加载到非特定于域的代码区域中供多个 .NET Compact Framework 中的应用程序域 使用。
数组
尽管某些语言支持不为零的数组下界,但是公共语言运行库不提供这样支持,当第一个元素不是 0 时,它将引发 MissingMethodException。
ASP.NET
.NET Compact Framework 主要是胖客户端平台,不提供 ASP.NET 支持。要开发用于移动设备的网页,可以使用 ASP.NET 移动 Web 控件。要开发用于个人计算机或 Web 服务提供程序的网页,请参见 ASP.NET 文档。
程序集和文件格式
这两个 Framework 的应用程序都使用程序集。这两个 Framework 都访问可移植可执行 (PE) 文件,这类文件包含 Microsoft 中间语言 (MSIL) 和定义 .NET Framework 应用程序的元数据。PE 文件可以引用由其他程序集文件定义和共享的编程命名空间。
有关更多信息,请参见与 .NET Framework 全功能版的二进制兼容性。
程序集和全局程序集缓存
.NET Compact Framework 目前不支持多模块程序集,但确实支持附属程序集。
类和类型
.NET Compact Framework 支持 .NET Framework 类库的一个子集。此子集适合于旨在资源受限制的设备上运行的应用程序,并且在语义上与 .NET Framework 中的同名类兼容。
有关确定 .NET Compact Framework 支持内容的信息,请参见如何:使用 .NET Compact Framework 的类库。
COM Interop
.NET Compact Framework 2.0 版支持 COM interop。该版本还具有增强的封送功能。有关更多信息,请参见 .NET Compact Framework 中的互操作性。
公共语言运行库
这两个 Framework 中的公共语言运行库都具有托管代码执行、实时 (JIT) 代码编译和垃圾回收的优点。它们支持公共语言规范 (CLS)。
这两个 Framework 都有内置的基元类型,以及其他在生成应用程序时可以使用和派生新类型的类型。
.NET Compact Framework 的公共语言运行库的大小大约是 .NET Framework 全功能版公共语言运行库的 12%。
控件
.NET Compact Framework 支持 .NET Framework 全功能版中的大部分 Windows 窗体控件,并且包含特定于 .NET Compact Framework 的控件。
Windows 窗体控是专门为 .NET Compact Framework 生成的。有关更多信息,请参见.NET Compact Framework 中的控件。
当前目录
Windows CE 操作系统中不存在当前目录的功能,因此 .NET Compact Framework 不支持 GetCurrentDirectory 和 SetCurrentDirectory 方法。
.NET Compact Framework 支持 ProcessStartInfo 的 WorkingDirectory 属性。但是,后续启动和文件加载时运行的可执行文件不保留该属性的上下文。
数据
.NET Compact Framework 提供 ADO.NET 的子集实现并且包含 SQL Server Mobile 数据提供程序。System.Data.OleDb 命名空间不受支持。
有关数据支持的更多信息,请参见数据访问和 XML 支持
数据类型和浮点精度
.NET Compact Framework 不支持 MidpointRounding 枚举。
在除法运算中,如果除数非常大或是最大浮点值,或者除数非常小或是最小浮点值,则运算返回零而不是正确的计算结果。
MIPS 平台不支持二进制浮点算术标准规范指定的完全精度,可能会导致不可预知的结果。出于性能考虑,.NET Compact Framework 不为此平台提供浮点模拟功能。
在命令提示符处进行调试
.NET Compact Framework 不支持 .NET Framework 2.0 版提供的新的 .NET Framework 命令行调试器 (MDbg.exe)。两个 Framework 的 2.0 版都否决了旧的 CLR 调试器 (DbgCLR.exe)。
部署应用程序
部署非常容易,只需通过以下几种方式之一将程序集复制到目标设备即可:使用桌面计算机的电缆连接或红外端口连接;使用无线 Internet 或 Intranet 连接。在 Microsoft Visual Studio 2005 中,可在调试时直接部署到设备。
诊断跟踪
.NET Compact Framework 不支持用于跟踪的配置文件,但您可以使用性能计数器。有关更多信息,请参见性能和诊断。
已释放对象
.NET Framework 全功能版不保证对已释放对象的属性或方法的访问总能成功。但是,在 .NET Framework 中访问 Text 之类的某些属性通常确实能够成功。由于 .NET Framework 与 .NET Compact Framework 之间的实现差异,在 .NET Compact Framework 中访问已释放对象的方法或属性差不多总是失败。
编码和本地化
本地化或全球化支持(如适合于区域设置的日期格式和排序表)尽可能服从基础操作系统以实现兼容性和精简高效。
.NET Compact Framework 依赖于操作系统进行数据排序,因此对于某些区域性,有可能出现意外的排序结果。
.NET Compact Framework 不支持每个线程一个 CurrentUICulture 设置。
有关全球化支持的更多信息,请参见 .NET Compact Framework 中的编码和本地化。
事件
.NET Compact Framework 支持 GotFocus 和 LostFocus 事件,但不支持 Activated 和 Deactivated 事件。
异常说明字符串
.NET Compact Framework 在一个单独的 DLL (System.SR.DLL) 中提供异常错误消息字符串,从而可以节省内存。
也可以提供适合其他区域性的异常字符串,使应用程序得以本地化。