Знаете ли вы какие-либо различия между кодом Compact и Full Framework во время выполнения? - PullRequest
15 голосов
/ 05 декабря 2008

Между этими двумя версиями .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

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

Ответы [ 5 ]

7 голосов
/ 05 декабря 2008

В зависимости от того, что вы ищете, существует Различия между .NET Compact Framework и .NET Framework статья на MSDN.

2 голосов
/ 24 декабря 2008

Из списка Митчела Селлерса, вот некоторые характеристики, которые делают Compact progreamming ... интересным.

Общее время выполнения для .NET Compact Framework примерно на 12 процентов больше, чем у общего языка .NET Framework.

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

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

.NET Compact Framework обрабатывает строки универсального идентификатора ресурса (URI) с префиксом file: // в отличие от полной .NET Framework.

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

Не все опции сокетов поддерживаются.

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


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

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

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

1 голос
/ 24 декабря 2008

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

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);
    }
}
1 голос
/ 14 декабря 2008

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

1 голос
/ 14 декабря 2008

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

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

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

...