2008-12-05 6 views
15

Hay una serie de diferencias de tiempo de ejecución en el código compatible entre estas dos versiones de .NET.¿Conoce alguna diferencia de tiempo de ejecución entre el código Compact y Full Framework?

Aquí está una lista de diferencias hasta ahora:

  • Graphics.DrawRectangle - se diferencia por 1 píxel
  • Graphics.DrawString - pierde el ajuste de línea, si se utiliza con un StringFormat con ambas StringAlignments ajusta en Central.
  • La mayoría de las operaciones de archivo - compact framework necesita una ruta completa
  • The status of a socket after BeginAccept
  • (En WinCE 5 por lo menos) no se puede utilizar un enchufe para enviar datos de forma sincronizada con un tiempo de espera (sin está bien, pero corre el riesgo de bloqueos)
  • Los mapas de bits (realmente todas las clases derivadas de imágenes) se comportan de manera diferente en how their resources are cleaned up. - ctacke
  • La fuente por defecto para las etiquetas y las vistas de árbol en el CF era más grande - Darwyn
  • Cuando una etiqueta se desactiva en la FQ se acaba de color gris (la framewark .net completa esboza el texto con otro color) - Darwyn
  • caminos de la Asamblea se devuelven en un formato diferente en el escritorio de System.Reflection.Assembly.GetExecutingAssembly() GetName() CodeBase -.. Qwertie

¿también tenemos nada más que añadir?

+0

¿Cómo no voté esto en diciembre? – ctacke

Respuesta

1

He notado algunas diferencias cuando tuve que portar una aplicación de CF en el .NET Framework completo.

  • La fuente por defecto para las etiquetas y las vistas de árbol en el CF era más grande

  • Cuando una etiqueta se desactiva en la FQ se acaba de color gris (la framewark .net completa esboza el texto con otro color)

1

Bitmaps (todas las clases derivadas de imágenes realmente) se comportan de manera diferente en how their resources are cleaned up.

caminos
+0

Esta es una de las mejores publicaciones de blog de todos los tiempos. Muchas gracias por este. – Bryan

1

Asamblea se devuelven en un formato diferente en el escritorio de

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

Esto devuelve una ruta normal bajo Windows CE, pero da una dirección URL (file: /// C:/...) en el marco de escritorio. La propiedad

System.Reflection.Assembly.GetExecutingAssembly().Location 

devuelve una ruta normal (C: ...) en el marco de escritorio, pero no está disponible en absoluto en el Compact Framework.

Aquí es una propiedad que devuelve la carpeta en la que se encuentra su aplicación:

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); 
    } 
} 
2

De la lista Mitchel Sellers, estas son algunas de las características que hacen progreamming compacto ... interesante.

El tiempo de ejecución de lenguaje común para .NET Compact Framework es aproximadamente el 12 por ciento del tamaño del tiempo de ejecución de lenguaje común de .NET Framework completo.

La funcionalidad de un directorio actual no está presente en el sistema operativo Windows Embedded CE.

Windows Embedded CE resuelve un nombre de archivo que se especifica sin información de ruta como en el directorio raíz del dispositivo, no en el directorio de la aplicación.

.NET Compact Framework procesa las cadenas Uniform Resource Identifier (URI) con el prefijo de archivo: // de forma diferente al .NET Framework completo.

Debido a consideraciones de tamaño y rendimiento, el .NET Compact Framework no es compatible con la serialización binaria utilizando BinaryFormatter, o la serialización SOAP utilizando SoapFormatter.

No se admiten todas las opciones de socket.

Debido a que la E/S del dispositivo ocurre en la RAM, no se pueden configurar ni acceder a los atributos de archivos y directorios.


La consola solo se proporciona a opción del proveedor del hardware.

Solo el 12% de .NET Framework. He sabido que eso significa que falta el 88%. Y probablemente querrás algo de eso.

Bastante notable que tanto se omite o se distorsiona porque no cabe en varios cientos de MB; en comparación con típicamente menos de 10 MB para dispositivos móviles clásicos.

+0

Sinceramente, a veces me pregunto sobre el sacrificio y qué tan lógico fue. Me refiero a lo sensato que es incluir Path.GetPathRoot() cuando solo devuelve "\". – Quibblesome

+0

Peleador, escribir código que sea compatible tanto con el escritorio como con los marcos móviles requiere cosas como esa. ya que GetPathRoot() simplemente devuelve "\", su tamaño de código probablemente solo sea de unos pocos bytes y, por lo tanto, no es un gran sacrificio incluirlo. – Qwertie

+0

No, es basura, debería devolver la raíz, por ejemplo: \ Tarjeta SD o \ Archivos de programa no solo \. Según la otra sugerencia, estoy bastante seguro de que la anulación Decimal.Round (decimal, MidpointRounding) apenas ocupa espacio, sin embargo, optaron por omitir esa y muchas otras llamadas útiles e invalidaciones. – Quibblesome

Cuestiones relacionadas