Notas de la versión RTM de las herramientas de desarrollo de Windows Phone

09/16/2010

A continuación se presentan las notas de versión de la versión RTM de las herramientas de desarrollo de Windows Phone.

Requisitos del sistema

Instalación

Desinstalación

Cambios importantes

Problemas conocidos

Requisitos del sistema

Sistemas operativos compatibles

Hardware

Plataformas no compatibles

Instalación

  1. Si se ha instalado una versión anterior de las herramientas de desarrollo de Windows Phone, será necesario desinstalarla antes de comenzar a instalar la versión nueva.
  2. Si la versión del mismo idioma de Visual Studio 2010 (Professional o superior) está instalada, se podrá seguir utilizando para el desarrollo después de instalar las herramientas de desarrollo de Windows Phone.
  3. Las herramientas de desarrollo de Windows Phone se pueden instalar aunque Visual Studio® no esté instalado.
  4. Haga clic en el enlace Herramientas de desarrollo de Windows Phone y siga las instrucciones.

Desinstalación

Cambios importantes en las herramientas de desarrollo de Windows Phone de Beta a RTM

 
 Elemento  Descripción
Actualización de aplicaciones creadas con versiones anteriores de las herramientas de desarrollo de Windows Phone Se han realizado algunos cambios en WMAppManifest.xml y los archivos de plantillas. Ahora que se ha activado la validación del manifiesto, es probable que tenga que actualizar estos archivos en sus proyectos anteriores. A continuación se muestran algunos cambios, no obstante, también puede comparar los archivos WmAppManifest.xml, app.xaml y app.xaml.cs de un proyecto nuevo con los mismos archivos de proyectos anteriores para ver qué ha cambiado y, a continuación, actualizar los archivos antiguos según proceda.

En la lista siguiente se muestran los cambios que se deben realizar en el archivo WmAppManifest.xml:

  • En el elemento <App>, cambie el valor del atributo Genre de NormalApp a apps.normal.
  • En el elemento <App>, cambie el valor del atributo RuntimeType de SilverLight a Silverlight.
  • Quite el atributo PlaceHolderString del elemento <DefaultTask>.
  • Agregue el atributo NavigationPage al elemento <defaulttask> y defínalo para la página principal de su aplicación. Por ejemplo: <DefaultTask … NavigationPage=”MainPage.xaml”/>.

En la lista siguiente se muestran los cambios que se deben realizar en el archivo App.xaml:

Nota: La opción recomendada para actualizar este archivo es obtener una copia de la versión más reciente. Copiar la información específica de su aplicación (por ejemplo, los recursos) del archivo antiguo al archivo nuevo.

  • Quite el elemento <Application.RootVisual>
  • Agregue el elemento <Application.ApplicationLifetimeObjects> . Por ejemplo:

    <Application.ApplicationLifetimeObjects>
          <!--Objeto obligatorio que controla los eventos de duración de la aplicación-->
          <shell:PhoneApplicationService Launching="Application_Launching" Closing="Application_Closing"
               Activated="Application_Activated" Deactivated="Application_Deactivated"/>
    </Application.ApplicationLifetimeObjects>
     

En la lista siguiente se muestran los cambios que se deben realizar en el archivo app.xaml.cs:

  • Si ha agregado el elemento <Application.ApplicationLifetimeObjects> al archivo App.xaml, tendrá que agregar estos controladores de eventos al archivo app.xaml.cs:

    private void Application_Launching(object sender, LaunchingEventArgs e)
    {
    }

    private void Application_Activated(object sender, ActivatedEventArgs e)
    {
    }

    private void Application_Deactivated(object sender, DeactivatedEventArgs e)
    {
    }

    private void Application_Closing(object sender, ClosingEventArgs e)
    {
    }
  • Agregue el código de inicialización siguiente a su archivo app.xaml.cs y llame a InitializePhoneApplication() en el constructor de aplicaciones:

    // Acceso fácil al fotograma raíz
    public PhoneApplicationFrame RootFrame { get; private set; }

    // Evitar la doble inicialización
    private bool phoneApplicationInitialized = false;

    // No agregar código adicional a este método
    private void InitializePhoneApplication()
    {
    if (phoneApplicationInitialized)
    return;

    // Crear el fotograma, pero no definirlo todavía como RootVisual; de este modo, la pantalla de presentación
    // podrá continuar activa hasta que la aplicación esté lista para representarse.
    RootFrame = new PhoneApplicationFrame();
    RootFrame.Navigated += CompleteInitializePhoneApplication;

    // Controlar los errores de navegación
    RootFrame.NavigationFailed += RootFrame_NavigationFailed;

    // Es importante no inicializar otra vez
    phoneApplicationInitialized = true;
    }

    // No agregar código adicional a este método
    private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
    {
    // Definir el visual raíz para permitir la representación de la aplicación
    if (RootVisual != RootFrame)
    RootVisual = RootFrame;

    // Quitar este controlador, ya no es necesario
    RootFrame.Navigated -= CompleteInitializePhoneApplication;
    }

    // Código que debe ejecutarse en caso de error en la navegación
    void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
    {
    if (System.Diagnostics.Debugger.IsAttached)
    {
    // Error en la navegación; entrar en el depurador
    System.Diagnostics.Debugger.Break();
    }
    }

    #endregion

 

Límite del número de cargas paralelas de aplicaciones en el teléfono El registro del teléfono del desarrollador es el proceso por el cual un desarrollador de Windows Phone® registrado puede desbloquear un Windows Phone comercial para cargar paralelamente las aplicaciones que utilizará para operaciones de desarrollo y prueba. Se limitará el número de aplicaciones cargadas paralelamente que se puedan instalar de forma simultánea en el teléfono. El límite predeterminado es de 10 aplicaciones. Si se intenta cargar paralelamente más de 10 aplicaciones, se presentará un error. Este límite no afecta a las aplicaciones instaladas mediante Windows Phone® Marketplace.

 

Referencias de ensamblado de XNA Framework El token de clave pública de los ensamblados de XNA Framework ha cambiado. Para que las referencias de ensamblado de proyectos de contenido y proyectos de juegos creados con versiones anteriores de las herramientas de desarrollo de Windows Phone funcionen correctamente, será necesario actualizarlas. Para ello, se quitan y vuelven a agregar las referencias que no se resuelvan correctamente utilizando el nodo References del Explorador de soluciones de Visual Studio.

 

Codificación de caracteres. Se eliminará la compatibilidad con todas las codificaciones de caracteres, con la excepción de la lista siguiente.
  • utf-8
  • utf-16
  • utf-16LE
  • utf-16BE
  • ISO-8859-1

Si se utiliza un valor de codificación que no es compatible en una aplicación, se producirá la excepción ArgumentException . Tendrá que modificar las aplicaciones existentes para quitar las referencias a valores de codificación que no sean compatibles. Los datos XML deben especificar únicamente codificaciones compatibles. Por ejemplo:
<?xml version="1.0" encoding= “utf-8”?>.

 

GamerPrivilegeException si el usuario no tiene privilegios de contenido. Si no se han definido los marcadores AllowProfileViewing y AllowUserCreatedContent en un perfil de jugador, el usuario no podrá ver los perfiles ni visualizar la tarjeta de jugador de otro usuario. Ahora, los siguientes métodos comprueban estos privilegios y devuelven GamerPrivilegeException si el usuario no tiene estos privilegios:
  • Guide.ShowGamerCard(PlayerIndex player, Gamer gamer)
  • Gamer.BeginGetFromGamertag(string gamertag, AsyncCallback callback, object asyncState)
  • Gamer.GetFromGamertag(string gamertag)
  • Gamer.GetProfile()
  • Gamer.BeginGetProfile(AsyncCallback callback, object asyncState
El mecanismo para compartir imágenes ha cambiado. Antes, Windows Phone® 7 colocaba la imagen en el Almacenamiento aislado de la aplicación. Entonces, la imagen se cargaba al iniciar la aplicación. Ahora, sin embargo, cuando se inicia la aplicación, se pasa un token de cadena. Para recuperar la imagen, la aplicación llama al método GetPictureFromToken(), public static Picture GetPictureFromToken(string token), que interpreta el token como un parámetro y devuelve un objeto Imagen. Será necesario actualizar las aplicaciones existentes.

El siguiente código de ejemplo muestra cómo utilizar el método GetPictureFromToken para recuperar una foto. Para obtener más información, vea Cómo crear una aplicación de extras de fotos para Windows Phone:

using System.Windows.Media.Imaging;
using Microsoft.Phone;
using System.IO;
using Microsoft.Xna.Framework.Media;
using System.Windows.Navigation;
.
.
.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
//Obtiene un diccionario de claves y valores de cadenas de consulta
IDictionary<string, string> queryStrings = this.NavigationContext.QueryString;


//Este código garantiza que haya, al menos, una clave en la cadena de consulta y comprueba si se ha incluido la clave de "token".
if (queryStrings.ContainsKey("token"))
{

//Este código recupera la imagen de la base de datos multimedia de Zune utilizando el token que se pasa a la aplicación.
MediaLibrary library = new MediaLibrary();
Picture picture = library.GetPictureFromToken(queryStrings["token"]);


//Crea un objeto WriteableBitmap y lo agrega a la propiedad Fuente de control de imagen.
BitmapImage bitmap = new BitmapImage();
bitmap.SetSource(picture.GetImage());
WriteableBitmap picLibraryImage = new WriteableBitmap(bitmap);
retrievePic.Source = picLibraryImage;
}

}

Implementación y depuración. Durante la implementación o depuración, si aparece el error: “No se ha podido iniciar la aplicación para depuración”. En primer lugar, compruebe que la aplicación está instalada en el dispositivo de destino y que el proyecto no contiene una pantalla de presentación. A continuación, desinstale la aplicación y, en Visual Studio, realice los pasos siguientes:
  1. Agregue al proyecto un archivo de imagen con el nombre SplashScreenImage.jpg.
  2. En el Explorador de soluciones, haga clic con el botón secundario en el archivo y seleccione Propiedades.
  3. En el panel Propiedades, defina Acción de compilación como Contenido.
  4. Vuelva a compilar e implementar la aplicación.
Instalación en Windows Vista. La configuración de las herramientas de desarrollo de Windows Phone bloquea la instalación en Windows Vista y obliga al usuario a instalar Windows Vista SP2.

Problemas conocidos

Instalación

Desinstalación

Expression Blend 4

Desarrollo de aplicaciones en Silverlight

Visual Studio 2010 Express para Windows Phone

Windows Phone Emulator

Desarrollo de juegos XNA

Implementación y depuración de Windows Phone en XNA Game Studio

Instalación

  1. Windows Phone Developer Tools (WPDT, las herramientas de desarrollo de Windows Phone) RTM sólo es compatible con la versión RTM de Visual Studio® 2010. Si hubiera alguna versión de la familia de productos de Visual Studio 2010 diferente a Visual Studio 2010 RTM instalada en el equipo, la configuración se detendrá y pedirá que se desinstale el producto o conjunto de componentes.
  2. Si desea conocer otros problemas conocidos sobre la instalación y desinstalación de Visual Studio 2010, consulte el archivo Léame.
  3. Si los componentes XNA Game Studio o Expression Blend no se instalan durante la instalación de WPDT, se podrán instalar desde Agregar o quitar programas:
    1. Haga clic con el botón secundario en Microsoft Windows Phone Developer Tools – ENU y seleccione Desinstalar o cambiar.
    2. Seleccione Agregar componentes opcionales y continúe con la instalación.
  4. Los proyectos de Windows Phone aparecen en LightSwitch y otros SKU de Shell integrados de Visual Studio. Sin embargo, estos SKU no son compatibles con el desarrollo de aplicaciones para Windows Phone.
  5. WPDT Repair no repara Expression Blend. Para reparar Expression Blend, lleve a cabo los pasos del punto 3 anterior.
  6. Solamente se puede instalar una versión localizada de WPDT en un equipo.
  7. Puede instalar una versión localizada de WPDT en un equipo con el correspondiente sistema operativo localizado.
  8. No se puede instalar una versión de idioma de WPDT en un sistema con una versión de idioma de Expression Blend diferente.
  9. Cuando se actualiza desde una versión WPDT ENU a una versión localizada, es necesario desinstalar la versión WPDT ENU y Expression Blend. Es necesario comprobar que se han desinstalado los componentes de Expression Blend restantes antes de continuar con la instalación de la versión localizada de WPDT.

Desinstalación

Expression Blend 4

  1. Los proyectos de Silverlight, Windows Presentation Foundation (WPF) y SketchFlow no están disponibles en Expression Blend 4 para Windows Phone. Para compilar proyectos de Silverlight, WPF o SketchFlow, descargue la versión de prueba de Expression Studio 4 Ultimate.

Desarrollo de aplicaciones en Silverlight

  1. HttpWebRequest (y WebClient) UserAgent definido como NULL o cadena vacía se enviará como NativeHost. Aunque la propiedad UserAgent de una HttpWebRequest sea nula o una cadena vacía(""), cuando se envía la cadena, la propiedad tiene el valor NativeHost.
  2. Cuando se utiliza Microsoft.Devices.MediaHistoryItem.PlayerContext para agregar pares clave-valor, se utiliza valores más pequeños. Esto afecta a los API MediaHistory.WriteRecentPlay() y MediaHistory.WriteAcquiredItem(), que no actualizarán el hub de música y vídeo si el tamaño combinado de los pares clave-valor es demasiado grande. La longitud de todos los pares clave-valor debe sumar un máximo de 200 caracteres.
  3. FMRadio no se apaga automáticamente cuando la aplicación pasa a segundo plano. De modo que seguirá consumiendo energía aunque no esté en uso. La aplicación deberá apagar la radio (por ejemplo, MyFMRadio.PowerMode = RadioPowerMode.Off) cuando ya no se vaya a utilizar.
  4. El control deslizante no controla los márgenes dentro de su plantilla de control. El control deslizante sólo funciona con valores pequeños (por ejemplo, 0-5). Si se intenta utilizar para valores superiores, es probable que llegue un punto en el que ya no se pueda arrastrar el control más a la derecha. Además, el control deslizante podría fallar en ciertos diseños (por ejemplo, si se define en "Stretch" dentro de ScrollViewer con una barra deslizante horizontal).
    Para resolver estos problemas, se debe actualizar la plantilla y quitar los márgenes interiores. Tenga en cuenta que al hacerlo, perderá el espacio adicional de pulsación en el destino.
  5. Cuando se activa una instancia desactivada, no se puede iniciar la navegación hasta que se haya completado la navegación hasta la página superior de la aplicación reactivada desde la página externa. El error más común es que las aplicaciones intenten llamar Navigate o GoBack al recibir el evento Completed de un selector. Desafortunadamente, esto puede ocurrir antes de concluir la navegación a la página superior. La solución es esperar a que el evento NavigationService.Navigated o OnNavigatedTo anule la página superior antes de llamar Navigate o GoBack.
  6. La representación del orden Z de MediaElement no funciona correctamente con Windows Phone Emulator. El elemento multimedia aparece en el fondo cuando se coloca sobre otros controles del emulador. Para solucionar este problema es necesario comprobar que no hay nada debajo (como, por ejemplo, un orden z por debajo) del elemento multimedia.
  7. Atañe a juegos y aplicaciones de Silverlight y XNA Framework. Será necesario quitar cualquier lógica que defina Guide.SimulateTrialMode como verdadero antes de enviar la aplicación Windows Phone 7 para la certificación final. Aunque esta propiedad no afecte al modo de prueba en los juegos de Windows Phone Marketplace, sí tiene un efecto no deliberado en Guide.ShowMarketplace en los juegos con licencias de prueba.
  8. Cuando se está en una página con un mapa, al navegar a otra página donde haya un mapa, los movimientos de alejamiento y acercamiento dejan de funcionar. Si una aplicación navega a varias páginas que contienen mapas, no se debe agregar el mapa a xaml. En lugar de eso, se incluirá un código que espere a que esté cargada toda la página para crear el mapa y agregarlo a la página.
  9. En algunas circunstancias, escribir en una columna de atributo binario de marcador varias veces puede provocar que se lance una InvalidOperationException a las llamadas posteriores a LeaderboardReader.EndRead. Esta excepción podría continuar mostrándose después de reiniciar la aplicación o cuando se ejecuten otras aplicaciones en el mismo dispositivo, si éste utiliza marcadores de amigos Xbox LIVE®.
  10. Si su código quita un botón de la barra de aplicación que NO sea el último y, a continuación, inserta un botón nuevo, el orden de los botones cambiará y uno de ellos se convertirá en un elemento de menú de la barra de aplicaciones.
    Ante este problema, se pueden quitar todos los elementos de la barra de aplicaciones y volver a agregarlos. Cuando sea necesario quitar un solo botón, se puede actualizar el botón directamente, en lugar de quitarlo y agregar un botón actualizado.
  11. El dispositivo no se puede desbloquear mientras Zune® se está sincronizando. Si intenta desbloquear el dispositivo antes de que Zune haya terminado de sincronizarse, se mostrará el siguiente mensaje de error:

    Error: No se puede conectar con el teléfono. Compruebe que el software de Zune está en ejecución y que se ha establecido el perfil de sincronización de Zune con su teléfono.
  12. Si la aplicación intenta acceder a un sitio web a través de la conexión inalámbrica utilizando HTTPWebRequest y el sitio está bloqueado por restricciones Wi-Fi, se devuelve una ArgumentNullException, en lugar de la WebException esperada. Para solucionar este problema, utilice una cláusula catch no específica (por ejemplo, catch (Exception e){..}) en la aplicación.
  13. No se puede llamar MessageBox.Show directamente desde el constructor porque no se ejecutará hasta después de haber procesado Application.Startup. Para solucionar este problema, se utilizará Dispatcher.BeginInvoke. Por ejemplo:

    System.Windows.Deployment.Current.Dispatcher.BeginInvoke(Test);

    void Test()
    {
    MessageBox.Show("Test", MessageBoxButton.OK);
    }
  14. MultiScaleImage.ZoomAboutLogicalPoint no representa la escena actualizada cuando MultiScaleImage.UseSprings se define en falso. Esto puede no ser problemático si otro elemento o lógica ensucia la escena, como, por ejemplo, una animación. No obstante, si no se resuelve mediante otras acciones que ensucien la escena, habrá dos soluciones:
    • Poner la llamada ZoomAboutLogicalPoint entre UseSprings Sets cuando UseSprings está definido en falso (MultiScaleImage = falso) y se está utilizando el método MultiImageScale.ZoomAboutLogicalPoint y, a continuación, utilizar el siguiente código de ejemplo:
      deepZoomImage.UseSprings = true;
      deepZoomImage.ZoomAboutLogicalPoint(1.5, 0.5, 0.5);
      deepZoomImage.UseSprings = false;

      Utilizando ZoomAboutLogicalPoint entre dos opciones de valor UseSprings, siendo la última opción falso, se conserva el efecto deseado de tener UseSprings desactivado y se actualiza la escala.
    • O bien, la implementación administrada de zoom y movimiento panorámico ZoomAboutLogcialPoint no se verá afectada por este problema, si se utiliza la propiedad ViewportWidth y/o ViewportOrigin. La siguiente implementación administrada de ZoomAboutLogicalPoint utiliza ViewportWidth y ViewportOrigin para solucionar este problema de representación:
      public static void ZoomAboutPoint(MultiScaleImage multiScaleImage, double zoomFactor, Point centerPoint)
      {
      double newZoomViewportWidth = multiScaleImage.ViewportWidth / zoomFactor;

      double centerPointXRatio = (centerPoint.X - multiScaleImage.ViewportOrigin.X) / multiScaleImage.ViewportWidth;
      double centerPointYRatio = (centerPoint.Y - multiScaleImage.ViewportOrigin.Y) / multiScaleImage.ViewportWidth;
      double finalcenterPointX = centerPoint.X - (newZoomViewportWidth * centerPointXRatio);
      double finalcenterPointY = centerPoint.Y - (newZoomViewportWidth * centerPointYRatio);
      multiScaleImage.ViewportOrigin = new Point(finalcenterPointX, finalcenterPointY);
      multiScaleImage.ViewportWidth = new ZoomViewportWidth;
      }

  15. Tenga cuidado al utilizar inicializadores de tipo estático, conocidos también como constructores de clase. Si un inicializador de tipo estático invoca una operación de bloqueo directa o indirectamente, podría provocar un interbloqueo y hacer que la aplicación se cuelgue. Por ejemplo, si el inicializador estático llama a DateTime.Now, la aplicación se colgará porque el API utiliza internamente bloqueos para garantizar la seguridad de los subprocesos. La solución consiste en utilizar un constructor de instancias que pueda comprobar e inicializar los datos una sola vez.
  16. Cuando el ensamblado de plataforma intenta cargar un ensamblado de usuario y falla, no se ve una excepción ni se apreciará fácilmente la pérdida de datos. Esto puede ocurrir cuando la plataforma intenta serializar algo en el ensamblado de usuario.
  17. El valor de la propiedad PhoneApplicationPage.State solamente se conserva si contiene valores. Si se define un valor State para la página y se navega a otra página y posteriormente se vuelve y se quita el valor de la colección State, al ir y volver a la página, la propiedad seguirá allí porque no se ha conservado el Estado. Una solución es diseñar la aplicación para definir los valores de estado en nulo, en lugar de quitarlos. Otra solución es mantener un valor de relleno en la colección en todo momento, para que el diccionario State se guarde siempre.
  18. Para los proyectos existentes, se ha quitado el control ListViewItem. Quizás sea necesario quitar la definición de estilo para esto en App.xaml. Busque mpc:ListViewItem.
  19. En esta versión, deberá hacerse un uso muy comedido de las devoluciones de llamada por fotograma (es decir, el control del evento CompositionTarget.Rendering) porque el rendimiento será inferior al óptimo.
  20. ApplicationBar y otras clases relacionadas no pueden participar en el enlace de datos y ámbitos de nombres, por lo que habrá que utilizar código subyacente si se quiere cambiar mediante programación las propiedades.
  21. Cuando existe el mismo espacio de nombres entre Silverlight y Windows Phone, pulsando Ayuda F1 se resuelve como Silverlight. Este es el comportamiento predeterminado de Visual Studio 2010.

Visual Studio 2010 Express para Windows Phone

  1. Para cambiar el espacio de nombres de una aplicación, hay que modificar los siguientes archivos: [nombre proyecto].csproj, App.xaml y App.xaml.cs
    • En el archivo [nombre proyecto].csproj file, localice la etiqueta <SilverlightAppEntry> y sustituya el nombre de espacio de nombres actual por el nuevo. Es decir, cambie <SilverlightAppEntry>OldNamespace.App</SilverlightAppEntry> por <SilverlightAppEntry>NewNamespace.App</SilverlightAppEntry>.
    • En el archivo App.xaml file, localice la siguiente línea x:Class=”OldNamespace.App" y cámbiela por x:Class="NewNamespace.App".
    • En el archivo App.xaml.cs, localice la declaración de espacio de nombres y cambie el espacio de nombres OldNamespace por NewNamespace.
    • Seleccione el espacio de nombres correcto y clasifíquelo como Objeto inicial en las propiedades del proyecto.
  2. Cuando se desbloquea el teléfono utilizando la herramienta registro del desarrollador de Windows Phone, puede aparecer un mensaje de error indicando que el nombre del dispositivo ya está en uso. Ocurrirá con mayor seguridad si el mismo dispositivo se ha desbloqueado anteriormente utilizando la misma cuenta. Este problema se resuelve de dos formas:
    • Usando el cliente de Zune para dar al dispositivo un nombre diferente antes de desbloquearlo.
    • O bien, quitando el registro del dispositivo antes de desbloquearlo. Para desbloquear el dispositivo, vaya al portal del desarrollador de Windows Phone 7, haga clic en sus aplicaciones, inicie sesión con su cuenta y haga clic en Registro de dispositivo.
  3. En determinados casos, el sistema podría quedarse sin memoria durante el empaquetado de XAP. Son los casos en los que el empaquetado de XAP lanza una excepción de memoria. Esto suele ocurrir con mayor frecuencia con proyectos muy grandes o proyectos en los que se empaqueta un gran número de archivos en XAP. Puede ocurrir en proyectos de Silverlight y XNA Framework. Para solucionar este problema, use uno de los procedimientos siguientes:
    • Agregar memoria.
      O bien
    • Utilizar un sistema operativo de 64 bits, utilizar VPDExpress.exe en lugar de devenv.exe; ejecutar compilaciones fuera de Visual Studio; cerrar TFS y otras ventanas para reducir la huella de memoria de devenv.exe.
  4. Las herramientas de desarrollo de Windows Phone muestran los componentes mencionados a continuación. Sin embargo, estos componentes no son compatibles.
    • Generador de perfiles
    • IntelliTrace
    • Administración de laboratorios
    • Pruebas
    • Componentes de la base de datos
      • Mostrar fuente de datos
      • Agregar nueva fuente de fecha
      • Comparar esquema

Windows Phone Emulator

  1. Compatible con GPU: Windows Phone Emulator es compatible con la emulación periférica de GPU utilizando la GPU host en un equipo compatible con la versión DDI 10 y superior y la versión DirectX 10 y superior. En cualquier otro equipo, el emulador utilizará una emulación de software que no es compatible con la plataforma. Si desea más información, consulte Configuración y requisitos del sistema para Windows Phone Emulator en la documentación de herramientas de desarrollo de Windows Phone en MSDN.
    Para comprobar si un equipo es compatible con la configuración recomendada, ejecute ‘dxdiag’ en una ventana de línea de comandos.

    En Windows Vista SP2, las cuatro actualizaciones que forman parte de KB 971644 también son necesarias para la compatibilidad con la implementación de Windows Phone Emulator.
    Las siguientes actualizaciones mencionadas en KB 971644 son necesarias para los sistemas Windows Vista x86:

    Las siguientes actualizaciones mencionadas en KB 971644 son necesarias para los sistemas Windows Vista x64:

  2. Si la zona horaria del equipo host cambia mientras Windows Phone Emulator está en ejecución, no se actualizará la zona horaria del emulador.
  3. Fiddler no es compatible con esta versión. Si se configura Fiddler para realizar el seguimiento de todo el tráfico de la red, el emulador no se podrá conectar a la red. Para conectarse a una intranet desde Windows Phone Emulator mientras Fiddler realiza el seguimiento del tráfico de la red en el equipo host, puede realizar los pasos siguientes. Sin embargo, Fiddler no supervisará el tráfico de red de Windows Phone Emulator.
    • Configurar Fiddler para realizar sólo el seguimiento del tráfico de Internet.
    • Usar la configuración de proxy manual y eludir el servidor proxy para las direcciones locales.
    • De este modo, el emulador se podrá conectar a un sitio de la intranet.
  4. Cuando Windows Phone Emulator se ejecuta en Windows Vista, se presentan algunos problemas de audio causados por los paquetes de audio que se pierden cuando se reproduce sonido, por ejemplo, un archivo multimedia o una alarma. Este problema no se produce cuando el emulador se ejecuta en Windows 7.
  5. Cuando se utiliza MediaPlayerLauncher en el emulador, los fotogramas de vídeo sólo se reproducen si se hace clic continuamente en la interfaz de usuario. Por ejemplo, si se hace clic, se ve un fotograma o dos y, después, la pantalla se queda en negro. Si se hace clic repetidamente, se verá el vídeo completo.
  6. Como el emulador no contiene todos los componentes de Windows Phone 7, algunos iniciadores y selectores podrían no funcionar según lo esperado (por ejemplo, correo electrónico, SMS, etc.) Para obtener más información, consulte Compatibilidad con iniciadores y selectores en Windows Phone Emulator.
  7. Multimedia: el emulador sólo es compatible con el contenedor VC-1 (perfiles WMV simples, principales y avanzados) para la codificación de vídeo.
  8. El emulador no es compatible con los cambios de orientación cuando el teclado no está habilitado. Habrá que deshabilitar el teclado pulsando Pausa o Av Página/Re Pág y girando el emulador.
  9. Si hay una instancia de máquina virtual de Virtual Box, esta se cierra al iniciar Windows Phone Emulator en un equipo host con Hardware VT habilitado.
  10. Si hay una instancia de máquina virtual de VMWare, esta se cierra al iniciar Windows Phone Emulator en un equipo host con Hardware VT habilitado.
  11. Para ejecutar juegos de XNA Framework en el emulador en un equipo host con Windows Vista, es necesario tener instalado Windows Vista SP2. Si desea más información sobre los requisitos para ejecutar juegos de XNA Framework, consulte la sección Implementación y depuración de Windows Phone en XNA Game Studio.

Desarrollo de juegos XNA

  1. Si se quita la referencia a mscorlib de un proyecto de XNA Game Studio, no se podrá volver a agregar al proyecto mediante la interfaz de Visual Studio. Si se intenta agregar a un proyecto de juego XNA Game Studio Windows una referencia a un ensamblado mscorlib después de haberla quitado, se mostrará el mensaje: "No se ha podido agregar la referencia a 'mscorlib'. El sistema de compilación ya hace referencia automática a este componente."

    En el caso de los proyectos de juegos de Windows Phone y Xbox 360®, cuando se intenta agregar una referencia al ensamblado mscorlib después de haberla quitado, no se muestra un mensaje de error, pero tampoco se agrega la referencia al proyecto. En todos los proyectos de juegos XNA Game Studio, la compilación fallará y se mostrará el siguiente error: "El tipo predefinido 'System.Object' no ha sido definido ni importado."

    Para solucionar este problema, abra el archivo .csproj y vuelva a agregar la referencia a esta biblioteca:

    <Reference Include="mscorlib">
    <Private>False</Private>
    </Reference>
  2. La opción CopyLocal no es compatible con los ensamblados de XNA Framework en proyectos que se implementan en Windows Phone o Xbox 360. Para los proyectos Xbox 360, los archivos se implementan, pero no son necesarios y, por tanto, son ignorados. En Windows Phone, al definir CopyLocal en verdadero se produce una MissingMethodException, un fallo de funcionalidad o se sale automáticamente del juego.
    a. Para la referencia de ensamblado Microsoft.Xna.Framework, la aplicación lanza una MissingMethodException.
    b. Para las referencias de ensamblado Microsoft Xna.Framework.Game o Microsoft.Xna.Framework.Graphics, el juego se inicia, pero se sale automáticamente.
    c. Para la referencia de ensamblado Microsoft.Xna.Framework.Input.Touch, el juego se ejecuta, pero no funciona la pantalla táctil.

    Para resolver este problema, defina la propiedad CopyLocal de la referencia de ensamblado en falso. Si desea más información sobre cómo hacerlo, consulte Cómo definir la propiedad Copy Local de una referencia.
  3. En la devolución de llamada a BeginGetProfile, el parámetro IAsyncResult presentará en ocasiones una propiedad AsyncState que esté indebidamente definida como nula, lo que provocará una NullReferenceExeption si se accede a la propiedad AsyncState. Para resolver este problema, defina el parámetro de devolución de llamada de BeginGetProfile como delegado. Si desea más información sobre cómo hacerlo, consulte Usar un delegado AsyncCallback para finalizar una operación asíncrona.
  4. El estado de efecto no se copia cuando se clona un Effect para la propiedad Effect y los estados de representación no se restauran al estado original cuando se aplica el efecto durante las llamadas a Mesh.Draw. Los cambios de estado no se reflejan en las propiedades de estado de representación de GraphicsDevice y los cambios posteriores realizados en las propiedades de estado de representación de GraphicsDevice pueden no actualizar el estado de dispositivo de los gráficos. Estos estados pueden restablecer algunas condiciones, como cuando se llama a SpriteBatch.Draw.
  5. Las opciones de configuración Línea de comandos del evento anterior a la compilación y Línea de comandos del evento posterior a la compilación no se pueden guardar ni editar desde la ficha Eventos de compilación de la página Propiedades del proyecto para los proyectos de contenidos de XNA Game Studio. Estos campos se pueden editar en la página Eventos de compilación, pero la configuración no se guarda. Los desarrolladores pueden editar manualmente el archivo .contentproj para agregar opciones de la línea de comandos de eventos anteriores y posteriores a la compilación. Estas opciones se muestran en la ficha Eventos de compilación en un campo de sólo lectura.
  6. Visual Studio se bloquea cuando se agregan nuevas rutas de acceso de referencia a proyectos de contenidos desde la página de propiedades del proyecto. Las rutas de acceso de referencia se pueden agregar manualmente editando el archivo .contentproj.user.

    <PropertyGroup>
    <ReferencePath>C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\</ReferencePath>
    </PropertyGroup>


    Después de agregar rutas de acceso de referencia editando manualmente el archivo .contentproj.user, estas opciones se muestran en la ficha Rutas de acceso de referencia en las páginas de propiedades de Visual Studio del proyecto de contenido.
  7. Si más de un proyecto de juegos o biblioteca de juegos dirigido a la misma plataforma en la misma solución hace referencia a un proyecto de contenido, se muestra el siguiente error de compilación:

    No se puede copiar el archivo {nombrearchivo}

    La causa de este error es que el contenido se borra de la carpeta de salida de contenido cuando más de un proyecto dirigido a la misma plataforma contiene una referencia a un proyecto de contenido compartido. Para solucionar este problema, agregue la referencia al proyecto de contenido a un proyecto de biblioteca de juegos y, a continuación, incluya la referencia a la biblioteca de juegos en cualquier otro proyecto de la solución.
  8. Los desarrolladores deben anular la selección del análisis D3DX para ejecutar la herramienta de rendimiento PIX para Windows.
  9. Los proyectos de Visual Studio 2010 no se ejecutan si el proyecto de prueba hace referencia a un proyecto de contenido de XNA Game Studio. Los desarrolladores deben anular la selección de los proyectos de contenido cuando utilicen el Asistente para crear pruebas.
  10. XNA Game Studio ha dejado de ser compatible con los archivos FBX que contienen más de una toma de animación. Un juego muestra varias copias de la primera toma de animación si el archivo FBX especifica varias tomas de animación.
  11. Los desarrolladores de XNA Game deben pensar en la posibilidad de implementar sus propias pantallas de presentación.
    Este cambio no obstaculiza la ejecución de juegos. En los juegos XNA que contienen un archivo SplashScreenImage.jpg, la pantalla de presentación se muestra apenas un instante y eso puede resultar molesto. Si implementa su propia pantalla de presentación en su código de inicio del juego, podrá determinar cuándo se muestra y durante cuánto tiempo. Tenga en cuenta las siguientes recomendaciones cuando cree pantallas de presentación para sus juegos:
    • Utilice ensamblados de entrada pequeños. Todos los ensamblados de entrada se firman y comprueban al arrancar la aplicación, de modo que este consejo sirve para los juegos de Silverlight y de XNA. La validación es MUY cara. De forma predeterminada, Silverlight agrega los recursos (texturas, etc.) al ensamblado de entrada como recursos administrados. En lugar de agregar recursos al ensamblado, se recomienda agregarlos manualmente al archivo XAP.
    • En Initialize(), realice los pasos siguientes:
      1. Llame a base.Initalize(). Así creará GraphicsDevice correctamente.
      2. Cargue su textura. Para que la carga de imágenes sea rápida, siga las sugerencias siguientes:
        • El tamaño de la textura debe ser adecuado para la resolución y orientación final del juego.
        • Defina la textura en ajustar automáticamente el tamaño a la energía de 2.
        • Utilice el formato comprimido DXT.
      3. Cree un método dinámico ( SpriteBatch).
      4. Represente la textura.
      5. Llame a GraphicsDevice.Present().
    • En Dibujar(), dibuje la textura de inicio y, si lo desea, cambie a cargar una animación en cuanto estos recursos estén cargados.

Implementación y depuración de Windows Phone en XNA Game Studio

  1. XNA Game Studio comprueba si hay una tarjeta gráfica DirectX 10 o posterior con un controlador WDDM 1.1 antes de implementar nada en Windows Phone Emulator. Si la tarjeta gráfica no es compatible con DirectX 10 o posterior, se muestra el siguiente mensaje en la ventana de error de Visual Studio:
    Se ha producido el siguiente error en la implementación: el adaptador de pantalla actual no cumple los requisitos del emulador para ejecutar las aplicaciones de XNA Framework.

    La herramienta DirectX Caps Viewer se puede utilizar si la tarjeta gráfica es compatible con DirectX 10 o posterior y si hay instalado un controlador WDDM 1.1. Esta herramienta se encuentra disponible para descarga a través de DirectX SDK.

    Para determinar si una tarjeta gráfica es compatible con DirectX 10 o posterior, realice los pasos siguientes:
    1. En DirectX Caps Viewer, se expande la carpeta Dispositivos de DXGI 1.1 y, a continuación, se expande la carpeta del siguiente nivel correspondiente a la tarjeta de vídeo. En esta carpeta, se muestran las carpetas de Direct3D® 10, Direct3D 10.1 y otras similares.
    2. Expanda la carpeta Direct3D 10.1 y mire en la entrada Nivel de la característica. En esta carpeta, si la tarjeta gráfica es compatible con DirectX 10 o posterior, se muestra una entrada para D3D10_FEATURE_LEVEL_10_0 o D3D10_FEATURE_LEVEL_10_1. Si el nivel de la característica indica un nivel de característica 9_n o inferior, significa que no es compatible con las funciones de Direct3D que necesita Windows Phone Emulator.

    Si aparece un mensaje de error y la tarjeta gráfica es compatible con DirectX 10, según la herramienta DirectX Caps Viewer, deberá consultar el sitio web del fabricante de la tarjeta gráfica para ver si hay algún controlador más reciente disponible.

    En Windows Vista SP2, las cuatro actualizaciones que forman parte de KB 971644 también son necesarias para la compatibilidad con la implementación de Windows Phone Emulator.
    Las siguientes actualizaciones mencionadas en KB 971644 son necesarias para los sistemas Windows Vista x86: Las siguientes actualizaciones mencionadas en KB 971644 son necesarias para los sistemas Windows Vista x64:
  2. En los dispositivos Windows Phone, VertexBuffer.GetData no devolverá resultados correctos para la sobrecarga de este método, que permite a los desarrolladores definir el parámetro vertexStride. Al acceder a datos con esta sobrecarga, se devuelve los datos correctos para los juegos de Windows Phone Emulator, Windows y Xbox 360. Como una solución para los juegos de Windows Phone, los juegos pueden leer el búfer de vértices, en lugar de utilizar el intervalo de vértices para localizar elementos.
  3. MediaPlayer.Play generará una InvalidOperationException si se ejecuta el cliente Zune en un equipo mientras se depura el sistema o se juega en un Windows Phone anclado a red. Esta excepción mostrará un mensaje de excepción incorrecto: "Error al reproducir canción. Compruebe que la canción no está protegida por DRM. Las canciones protegidas por DRM no son compatibles con los juegos de creador." Este mensaje de excepción es incorrecto y se muestra aunque la canción no esté protegida por DRM. Para resolver este problema, cierre el cliente Zune mientras realiza la depuración o juega en un Windows Phone anclado a red.
  4. Si el juego utiliza orientación horizontal, Windows Phone Emulator girará indebidamente el contenido de búfer a su posición anterior cuando se represente el búfer al inicializar el juego y al salir del mismo. Los fotogramas representados se girarán hacia arriba y abajo o de izquierda a derecha, dependiendo de la configuración de DisplayOrientation. Este comportamiento sólo se observará al inicializar el juego y salir de él en el emulador.
  5. En Windows Phone Emulator, se debe especificar el canal de índice SkinnedEffect hueso como uno de los formatos de elementos de vértices enteros, ya sea Byte4, Short2 o Short4. Este mismo conjunto de formatos de datos enteros no se puede utilizar para otros canales de entrada del sombreador, como colores, posiciones y coordenadas de texturas en el emulador. Se puede utilizar cualquier formato de vértice con cualquier canal de entrada de sombreador en los dispositivos Windows Phone, Xbox 360 y Windows.
  6. Si un proyecto no se ha implementado nunca y el proyecto de juego no está configurado para compilar e implementar, el desarrollo del juego genera un error y el siguiente mensaje: "No se ha podido iniciar la aplicación para depurarla. Compruebe que la aplicación está instalada en el dispositivo de destino." Si se ha implementado el juego anteriormente en el dispositivo, no se mostrará ningún mensaje de error, pero el juego no se implementará y la versión del juego que se haya implementado anteriormente se iniciará durante la depuración. Para definir un proyecto de juego para compilar o implementar, realice los pasos siguientes:
    1. En Visual Studio® 2010 Express para Windows Phone, haga clic en Herramientas, a continuación, haga clic en Configuración, en Configuración de experto para habilitar la lista desplegable Configuraciones de soluciones.
    2. Desde la lista Configuraciones de soluciones de la barra de herramientas estándar, seleccione Administrador de configuración.
    3. Marque las casillas de verificación Compilar e Implementar.

 

Copyright y declaración de confidencialidad

La información de este documento, incluidas las referencias da URL y otros sitios web, está sujeta a cambios sin previo aviso. A menos que se especifique lo contrario, las organizaciones, productos, nombres de dominio, direcciones de correo electrónico, logotipos, personas, lugares y eventos mostrados en los ejemplos de estos documentos son ficticios. No se pretende que guarden relación con ninguna compañía, organización, producto, nombre de dominio, dirección de correo electrónico, logotipo, persona, lugar ni evento real y deberá entenderse así. El cumplimiento de todas las leyes aplicables en relación con el copyright es responsabilidad del usuario. Los derechos reconocidos por el copyright establecen, entre otras cosas, que no se pueden reproducir, guardar en ni incluir en un sistema de recuperación, ni transmitir en forma alguna ni por ningún medio (sea electrónico, mecánico, fotocopiado, grabado, etc.) ni con ningún otro fin, ninguna parte de este documento, sin el permiso expreso y por escrito de Microsoft Corporation.

Microsoft puede tener patentes, aplicaciones de patentes, marcas comerciales, copyrights u otros derechos de propiedad intelectual relativos al contenido de este documento. Con la excepción de lo expresamente estipulado en cualquier acuerdo de licencia escrito de Microsoft, el hecho de entregar este documento no concede ninguna licencia sobre las patentes, marcas comerciales, copyrights ni ninguna otra propiedad intelectual.

© 2010 Microsoft Corporation. Reservados todos los derechos.

Microsoft Direct3D, DirectX, Expression, Expression Blend, Hyper-V, Internet Explorer, MSDN, Silverlight, Visual Studio, Windows, Windows Phone, Windows Server, Windows Vista, Xbox, Xbox 360, Xbox LIVE, XNA y Zune son marcas comerciales del grupo de compañías de Microsoft.

Todas las demás marcas comerciales pertenecen a sus respectivos propietarios.