代码之家  ›  专栏  ›  技术社区  ›  Quibblesome

你知道Compact和Full Framework代码在运行时有什么不同吗?

  •  15
  • Quibblesome  · 技术社区  · 17 年前

    这两个版本的兼容代码在运行时存在许多差异。网。

    以下是迄今为止的差异列表:

    • 绘图。DrawRectangle-相差1像素
    • 绘图。DrawString-如果与两个StringAlignments都设置为Center的StringFormat一起使用,则会丢失换行。
    • 大多数文件操作-紧凑型框架需要完整路径
    • The status of a socket after BeginAccept
    • (至少在WinCE 5中)您不能使用套接字在超时的情况下同步发送数据(没有超时是可以的,但您有挂起的风险)
    • 位图(实际上是所有从Image派生的类)在 how their resources are cleaned up .-ctacke
    • CF中标签和树视图的默认字体较大-Darwyn
    • 当CF中的标签被禁用时,它只会变灰(完整的.net框架用另一种颜色勾勒出文本)-Darwyn
    • 系统在桌面上以不同的格式返回程序集路径。反思。组装。GetExecutingAssembly()。获取名称()。代码库-Qwertie

    我们还有什么要补充的吗?

    5 回复  |  直到 17 年前
        1
  •  7
  •   Mitchel Sellers    17 年前

    根据您正在寻找的内容,有 Differences between .NET Compact Framework and .NET Framework MSDN上的文章。

        2
  •  2
  •   dkretz    17 年前

    从Mitchel Sellers的列表中,这些是使紧凑型进步的一些特征。…有趣。

    的公共语言运行库。NET Compact Framework的大小大约是完整版的12%。NET Framework公共语言运行库。

    当前目录的功能在Windows Embedded CE操作系统中不存在。

    Windows Embedded CE将指定的没有路径信息的文件名解析为在设备的根目录中,而不是在应用程序目录中。

    这个。NET Compact Framework处理以file://为前缀的统一资源标识符(URI)字符串的方式与完整字符串不同。NET框架。

    由于尺寸和性能方面的考虑。NET Compact Framework不支持使用BinaryFormatter进行二进制序列化,也不支持使用SoapFormatter进行SOAP序列化。

    并非所有套接字选项都受支持。

    由于设备I/O发生在RAM中,因此无法设置或访问文件和目录属性。


    控制台仅由硬件供应商提供。

    只有12%。NET Framework。我巧妙地发现这意味着缺少88%。你可能会想要一些。

    非常值得注意的是,由于无法容纳几百MB,因此省略或扭曲了这么多内容;相比之下,传统移动设备通常小于10MB。

        3
  •  1
  •   Darwyn    17 年前

    当我必须将CF应用程序移植到完整的.net框架时,我注意到了一些差异。

    • CF中标签和树视图的默认字体较大

    • 当CF中的标签被禁用时,它只会变灰(完整的.net框架用另一种颜色勾勒出文本)

        4
  •  1
  •   ctacke    17 年前

    位图(实际上是所有从Image派生的类)在 how their resources are cleaned up .

        5
  •  1
  •   Qwertie    17 年前

    程序集路径在桌面上以不同的格式返回

    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);
        }
    }
    
    推荐文章