Знаете ли вы какие-либо различия во времени между кодом Compact и Full Framework?

Существует ряд различий во времени выполнения совместимого кода между этими двумя версиями .NET.

Ниже приведен список различий:

  • Graphics.DrawRectangle - отличается на 1 пиксель
  • Graphics.DrawString - потеряет перенос строки, если используется с StringFormat, с установками StringAlignments, установленными в Center.
  • Большинство операций с файлами - компактная структура требует полного пути
  • Статус сокета после BeginAccept
  • (по крайней мере, в WinCE 5) вы не можете использовать сокет для синхронного отправки данных с тайм-аутом (без всего, но вы рискуете зависать).
  • Растровые изображения (на самом деле все производные от изображений классы) ведут себя по-разному в как их ресурсы очищаются. - ctacke
  • Шрифт по умолчанию для меток и древовидных изображений в CF был больше - Darwyn
  • Когда метка отключена в CF, она просто неактивна (полный фреймворк .net очерчивает текст другим цветом) - Darwyn
  • Пути сборки возвращаются в другом формате на рабочем столе из System.Reflection.Assembly.GetExecutingAssembly(). GetName(). CodeBase - Qwertie

У нас также есть что добавить?

Ответы

Ответ 2

Из списка Mitchel Sellers, это некоторые характеристики, которые делают Compact progreamming... интересным.

Общая среда исполнения для .NET Compact Framework составляет примерно 12 процентов от размера полной среды выполнения Common Framework.NET Framework.

Функциональность текущего каталога отсутствует в операционной системе Windows Embedded CE.

Windows Embedded CE разрешает имя файла, указанное без информации о пути, как находящееся в корневом каталоге устройства, а не в каталоге приложения.

.NET Compact Framework обрабатывает строки Uniform Resource Identifier (URI) с префиксом файла://иначе, чем полная .NET Framework.

В связи с соображениями размера и производительности .NET Compact Framework не поддерживает двоичную сериализацию с использованием BinaryFormatter или сериализации SOAP с использованием SoapFormatter.

Поддерживаются не все параметры сокета.

Поскольку операции ввода-вывода устройства происходят в ОЗУ, невозможно установить или получить доступ к атрибутам файла и каталога.


Консоль предоставляется только у поставщика оборудования.

Только 12%.NET Framework. Я ловко понял, что это означает, что 88% отсутствует. И вы, вероятно, захотите его.

Довольно замечательно, что так много опущено или искажено, потому что оно не будет входить в несколько сотен МБ; по сравнению с обычно менее 10 МБ для классических мобильных устройств.

Ответ 3

Я заметил некоторые отличия, когда мне пришлось переносить приложение CF на полную инфраструктуру .net.

  • Шрифт по умолчанию для меток и древовидных изображений в CF был больше

  • Когда метка отключена в CF, она просто недоступна (полный фрейм-план .net выделяет текст другим цветом)

Ответ 4

Растровые изображения (на самом деле все производные от изображений) ведут себя по-другому в как очищаются их ресурсы.

Ответ 5

Пути сборки возвращаются в другом формате на рабочем столе из

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

Это возвращает нормальный путь в Win CE, но дает URL-адрес (файл:///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);
    }
}