Notes de publication - Outils du développeur Windows Phone RTM

09/16/2010

Voici les notes de publication relatives à la version RTM des Outils du développeur Windows Phone.

Configuration système

Installation

Désinstallation

Modifications avec rupture

Problèmes connus

Configuration système

Systèmes d'exploitation pris en charge

Matériel

Plateformes non prises en charge

Installation

  1. Si une version précédente des Outils du développeur Windows Phone est installée, vous devez la désinstaller avant d'installer la nouvelle version.
  2. Si la même version linguistique de Visual Studio2010 (Professional ou supérieur) est installée, vous pouvez l'utiliser à des fins de développement après l'installation des Outils du développeur Windows Phone.
  3. Vous pouvez installer les Outils du développeur Windows Phone même si Visual Studio® n'est pas installé.
  4. Cliquez sur le lien Outils du développeur Windows Phone et suivez les instructions.

Désinstallation

Modifications avec rupture apportées aux Outils du développeur Windows Phone entre les versions Bêta et RTM

 
 Élément  Description
Mise à jour d'applications créées à l'aide de versions antérieures des Outils du développeur Windows Phone Des modifications ont été apportées au fichier WMAppManifest.xml ainsi qu'aux fichiers modèles. La validation de manifeste ayant été activée, il se peut que vous deviez mettre à jour ces fichiers dans les anciens projets. Un certain nombre de modifications sont répertoriées ici. Toutefois, vous pouvez également comparer les fichiers WmAppManifest.xml, app.xaml et app.xaml.cs du nouveau projet aux fichiers correspondants des anciens projets pour déterminer les modifications qui ont eu lieu, puis mettre à jour les anciens fichiers en conséquence.

La liste suivante présente les modifications que vous devez apporter au fichier WmAppManifest.xml :

  • Dans l'élément <App>, remplacez la valeur NormalApp de l'attribut Genre par apps.normal.
  • Dans l'élément <App>, remplacez la valeur SilverLight de l'attribut RuntimeType par Silverlight.
  • Supprimez l'attribut PlaceHolderString de l'élément <DefaultTask>.
  • Ajoutez l'attribut NavigationPage à l'élément <defaulttask>, puis définissez-le sur la page principale de l'application. Par exemple : <DefaultTask … NavigationPage=”MainPage.xaml”/>.

La liste suivante présente les modifications que vous devez apporter au fichier App.xaml :

Remarque : pour la mise à jour de ce fichier, il est conseillé d'obtenir une copie de la version la plus récente. Copiez les informations spécifiques à l'application (telles que les ressources) de l'ancien vers le nouveau fichier.

  • Supprimez l'élément <Application.RootVisual> .
  • Ajoutez l'élément <Application.ApplicationLifetimeObjects> . Par exemple :

    <Application.ApplicationLifetimeObjects>
          <!--Objet obligatoire qui gère les événements de durée de vie de l'application-->
          <shell:PhoneApplicationService Launching="Application_Launching" Closing="Application_Closing"
               Activated="Application_Activated" Deactivated="Application_Deactivated"/>
    </Application.ApplicationLifetimeObjects>
     

La liste suivante présente les modifications que vous devez apporter au fichier app.xaml.cs :

  • Si vous avez ajouté l'élément <Application.ApplicationLifetimeObjects> au fichier App.xaml, vous devez ajouter ces gestionnaires d'événements au fichier 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)
    {
    }
  • Ajoutez le code d'initialisation suivant au fichier app.xaml.cs, puis appelez InitializePhoneApplication() dans le constructeur de l'application :

    // Accès facilité au cadre racine
    public PhoneApplicationFrame RootFrame { get; private set; }

    // Évitez la double initialisation
    private bool phoneApplicationInitialized = false;

    // N'ajoutez pas de code supplémentaire à cette méthode
    private void InitializePhoneApplication()
    {
    if (phoneApplicationInitialized)
    return;

    // Créez l'image mais ne la définissez pas encore comme RootVisual ; cela permet à
    // l'écran de démarrage de rester actif jusqu'à ce que l'application soit prête pour le rendu.
    RootFrame = new PhoneApplicationFrame();
    RootFrame.Navigated += CompleteInitializePhoneApplication;

    // Gère les échecs de navigation
    RootFrame.NavigationFailed += RootFrame_NavigationFailed;

    // Attention à ne pas procéder à une réinitialisation
    phoneApplicationInitialized = true;
    }

    // N'ajoutez pas de code supplémentaire à cette méthode
    private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
    {
    // Définissez le Visual racine pour que le rendu de l'application soit autorisé
    if (RootVisual != RootFrame)
    RootVisual = RootFrame;

    // Supprimez ce gestionnaire qui est désormais inutile
    RootFrame.Navigated -= CompleteInitializePhoneApplication;
    }

    // Code à exécuter en cas d'échec de la navigation
    void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
    {
    if (System.Diagnostics.Debugger.IsAttached)
    {
    // En cas d'échec de la navigation, interceptez le débogueur
    System.Diagnostics.Debugger.Break();
    }
    }

    #endregion

 

Limitation du nombre de chargements d'applications tierces sur le téléphone Le processus d'inscription des téléphones de développement permet à un développeur Windows Phone® inscrit de déverrouiller un téléphone Windows Phone commercialisé pour charger des applications tierces à des fins de développement et de test. Une limitation du nombre de chargements d'applications tierces installées simultanément sur le téléphone sera appliquée. La limite par défaut sera de 10 applications. Les tentatives visant à charger plus de 10 applications aboutiront à une erreur. Cette limitation n'affecte pas les applications installées via Windows Phone® Marketplace.

 

Références d'assembly XNA Framework Le jeton de clé publique des assemblys XNA Framework a été modifié. Pour fonctionner correctement, les références d'assembly des projets de contenu et de jeux créés à l'aide de versions antérieures des Outils du développeur Windows Phone doivent être mises à jour. Vous pouvez également supprimer puis rajouter les références qui ne se résolvent pas correctement à l'aide du nœud Références de l'Explorateur de solutions Visual Studio.

 

Encodage de caractères. La prise en charge des encodages de caractères sera supprimée, à l'exception de ceux figurant dans la liste ci-dessous.
  • utf-8
  • utf-16
  • utf-16LE
  • utf-16BE
  • ISO-8859-1

L'utilisation d'une valeur d'encodage non prise en charge dans une application provoque une exception ArgumentException . Vous devez modifier les applications existantes pour supprimer les références aux valeurs d'encodage non prises en charge. Les données XML doivent spécifier uniquement des encodages pris en charge. Par exemple :
<?xml version="1.0" encoding= “utf-8”?>.

 

Une exception GamerPrivilegeException est retournée si l'utilisateur ne possède pas de privilèges relatifs au contenu. Si les indicateurs AllowProfileViewing et AllowUserCreatedContent ne sont pas définis dans le profil du joueur, celui-ci ne peut pas afficher les profils ni la carte d'un autre joueur. Les méthodes suivantes permettent à présent de rechercher ces privilèges et retournent une exception GamerPrivilegeException si l'utilisateur n'en possède pas :
  • 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
Le mécanisme de partage des images a été modifié. Auparavant, Windows Phone® 7 plaçait l'image dans le stockage isolé de l'application. L'image était alors chargée au lancement de l'application. Désormais, au lancement de l'application, elle est transmise à un jeton de chaîne. Pour la récupérer, l'application appelle la méthode GetPictureFromToken(), public static Picture GetPictureFromToken(string token), qui prend le jeton en tant que paramètre et retourne un objet Image. Vous devez mettre à jour les applications existantes.

L'exemple de code suivant montre l'utilisation de la méthode GetPictureFromToken en vue de récupérer une photo. Pour plus d'informations, consultez la rubrique How to: Create a Photo Extras Application for Windows Phone (en anglais) :

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)
{
//Obtient un dictionnaire de clés et de valeurs de chaîne de requête
IDictionary<string, string> queryStrings = this.NavigationContext.QueryString;


//Ce code garantit la présence d'au moins une clé dans la chaîne de requête et vérifie la présence de la clé « jeton ».
if (queryStrings.ContainsKey("token"))
{

//Ce code récupère l'image à partir de la base de données multimédia Zune locale à l'aide du jeton transmis à l'application.
MediaLibrary library = new MediaLibrary();
Picture picture = library.GetPictureFromToken(queryStrings["token"]);


//Crée un objet WriteableBitmap et l'ajoute à la propriété source du contrôle Image.
BitmapImage bitmap = new BitmapImage();
bitmap.SetSource(picture.GetImage());
WriteableBitmap picLibraryImage = new WriteableBitmap(bitmap);
retrievePic.Source = picLibraryImage;
}

}

Déploiement et débogage. Dans le cadre du déploiement ou du débogage, si vous obtenez l'erreur suivante : « Impossible de lancer l'application à des fins de débogage ». Commencez par vérifier que l'application est installée sur l'appareil cible et que le projet n'inclut aucun écran de démarrage. Désinstallez l'application, puis dans Visual Studio, procédez comme suit :
  1. Ajoutez un fichier d'image portant le nom SplashScreenImage.jpg au projet.
  2. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le fichier, puis sélectionnez Propriétés.
  3. Dans le volet Propriétés, affectez la valeur Content à la propriété Build Action.
  4. Recréez et redéployez l'application.
Installation sous Windows Vista. Le programme d'installation des Outils du développeur Windows Phone bloque l'installation sous Windows Vista et force l'utilisateur à installer Windows Vista SP2.

Problèmes connus

Installation

Désinstallation

Expression Blend 4

Développement d'applications Silverlight

Visual Studio 2010 Express pour Windows Phone

Émulateur Windows Phone

Développement XNA Game

Débogage/déploiement de Windows Phone et débogage dans XNA Game Studio

Installation

  1. La version RTM des Outils du développeur Windows Phone (WPDT) est compatible uniquement avec la version RTM de Visual Studio® 2010. Si une autre version de la famille de produits Visual Studio 2010 est installée sur votre ordinateur, le programme d'installation s'interrompra et vous demandera de désinstaller le produit ou un ensemble de composants.
  2. Pour consulter d'autres problèmes connus d'installation ou de désinstallation en relation avec Visual Studio 2010, consultez le fichier Lisez-moi.
  3. En cas d'échec de l'installation des composants XNA Game Studio ou Expression Blend lors de l'installation de WPDT, vous pouvez les installer à partir du menu Ajout/Suppression de programmes :
    1. Cliquez avec le bouton droit sur Outils du développeur Microsoft Windows Phone – FRA, puis sélectionnez Désinstaller/Modifier.
    2. Sélectionnez Ajouter des composants facultatifs et poursuivez l'installation.
  4. Les projets Windows Phone s'affichent dans LightSwitch et d'autres références Shell intégrées de Visual Studio. Toutefois, le développement d'applications Windows Phone n'est pas pris en charge dans ces références.
  5. WPDT Repair ne répare pas Expression Blend. Pour réparer Expression Blend, exécutez les étapes décrites dans le troisième point ci-dessus.
  6. Une seule version localisée de WPDT peut être installée sur un ordinateur.
  7. Vous pouvez installer une version localisée de WPDT sur un ordinateur possédant un système d'exploitation localisé correspondant.
  8. L'installation d'une version linguistique de WPDT sur un système possédant une version linguistique différente d'Expression Blend n'est pas prise en charge.
  9. Lors de la mise à niveau de la version ENU de WPDT vers une version localisée, vous devez désinstaller la version ENU de WPDT et Expression Blend. Avant de poursuivre l'installation de la version localisée de WPDT, vérifiez que vous avez désinstallé les composants restants d'Expression Blend.

Désinstallation

Expression Blend 4

  1. Les projets Silverlight, Windows Presentation Foundation (WPF) et SketchFlow ne sont pas disponibles dans Expression Blend 4 pour Windows Phone. Pour développer des projets Silverlight, WPF ou SketchFlow, téléchargez la version d'évaluation de Expression Studio 4 Ultimate.

Développement d'applications Silverlight

  1. Un UserAgent HttpWebRequest (et WebClient) défini sur NULL ou une chaîne vide sera envoyé en tant que NativeHost. Même si la propriété UserAgent d'une HttpWebRequest est définie sur NULL ou une chaîne vide (""), lorsque la demande est envoyée, cette propriété est définie sur la valeur NativeHost.
  2. Lors de l'utilisation de Microsoft.Devices.MediaHistoryItem.PlayerContext pour ajouter des paires clé-valeur, utilisez des valeurs plus petites. Ceci a un impact sur les API MediaHistory.WriteRecentPlay() et MediaHistory.WriteAcquiredItem() qui ne parviendront pas à mettre à jour le hub Musique + Vidéos si la taille combinée des paires clé-valeur est trop importante. La longueur combinée de toutes les paires clé-valeur doit être inférieure ou égale à 200 caractères.
  3. La FMRadio n'est pas désactivée automatiquement lorsque l'application est exécutée en arrière-plan. Elle consomme de la batterie même lorsqu'est est inutilisée. L'application doit désactiver la radio (par exemple, MyFMRadio.PowerMode = RadioPowerMode.Off) lorsque celle-ci n'est plus utilisée.
  4. Le contrôle Slider ne gère pas les marges à l'intérieur du modèle de contrôle associé. Le curseur ne fonctionne qu'avec les petites valeurs (par exemple, de 0 à 5). Si vous tentez de l'utiliser avec des valeurs plus élevées, il se peut que vous ne puissiez pas faire glisser le curseur assez loin vers la droite. En outre, le curseur peut se bloquer en fonction de la disposition (par exemple, si vous le définissez sur "Stretch" dans ScrollViewer avec une barre de défilement horizontale).
    Pour résoudre ce problème, mettez à jour le modèle et supprimez les marges intérieures. En procédant ainsi, vous perdez la zone tactile supplémentaire.
  5. Lorsqu'une instance désactivée d'une application est réactivée, la navigation ne peut pas démarrer avant la fin de la navigation de la page supérieure de l'application réactivée à partir de la page externe. L'erreur qui se produit le plus souvent est que les applications tentent d'appeler Navigate ou GoBack lors de la réception de l'événement Completed d'un sélecteur. Malheureusement, cela peut survenir avant la fin de la navigation vers la page supérieure. La solution consiste à attendre l'événement NavigationService.Navigated ou le remplacement OnNavigatedTo de la page supérieure avant l'appel de Navigate ou GoBack.
  6. Le rendu de l'ordre de plan de MediaElement ne fonctionne pas correctement dans l'émulateur Windows Phone. L'élément multimédia apparaît à l'arrière-plan lorsqu'il est placé en haut des autres contrôles de l'émulateur. Pour résoudre ce problème, vérifiez qu'aucun élément n'est placé derrière (c.-à-d. possède un ordre de plan inférieur à) l'élément multimédia.
  7. S'applique aux jeux et applications Silverlight et XNA Framework : vous devez supprimer toute logique définissant Guide.SimulateTrialMode sur True avant d'envoyer l'application Windows Phone 7 à des fins de certification finale. Alors que cette propriété n'affecte pas le mode d'évaluation dans les jeux Windows Phone Marketplace, elle provoque des effets inattendus sur Guide.ShowMarketplace dans les jeux sous licence d'essai.
  8. Lorsque vous êtes situé sur une page sur laquelle figure une carte, la navigation vers une autre page qui affiche également une carte provoque l'arrêt du mouvement d'étirement-pincement. Si une application accède à plusieurs pages incluant des cartes, n'ajoutez pas la carte au fichier xaml. À la place, incluez du code qui patiente jusqu'à la fin du chargement de la page avant de créer votre carte et de l'ajouter à la page.
  9. Dans certains cas, le fait d'écrire plusieurs fois dans une colonne de blob de classement peut provoquer la levée d'une exception InvalidOperationException sur les appels suivants vers LeaderboardReader.EndRead. La levée de cette exception peut se poursuivre après le redémarrage de l'application ou lors de l'exécution d'autres applications sur l'appareil qui utilise les classements des amis Xbox LIVE®.
  10. Si votre code supprime un bouton Barre d'application qui n'est PAS positionné en dernier, puis insère un nouveau bouton, l'ordre des boutons est modifié et l'un d'eux est converti en élément de menu Barre d'application.
    Si vous rencontrez ce problème, vous pouvez supprimer tous les éléments Barre d'application, puis les ajouter de nouveau. Pour modifier un seul bouton, vous pouvez le mettre à jour directement plutôt que de le supprimer et d'ajouter un bouton mis à jour.
  11. Le déverrouillage de l'appareil échoue lorsque Zune® est en cours de synchronisation. Si vous tentez de déverrouiller l'appareil avant la fin de la synchronisation de Zune, le message d'erreur suivant s'affiche :

    Erreur : impossible de connecter le téléphone. Vérifiez que le logiciel Zune est en cours d'exécution et qu'un partenariat de synchronisation entre Zune et le téléphone a été mis en place.
  12. Si l'application tente d'accéder à un site Web via Wi-Fi à l'aide de HTTPWebRequest et que celui-ci est bloqué en raison de restrictions Wi-Fi, une exception ArgumentNullException est retournée au lieu de l'exception WebException attendue. Pour résoudre ce problème, utilisez une clause Catch non spécifique (par exemple, catch (Exception e){..}) dans l'application.
  13. Vous ne pouvez pas effectuer d'appel direct vers MessageBox.Show à partir du constructeur car celui-ci n'est pas exécuté tant que Application.Startup n'a pas été traité. Pour résoudre ce problème, utilisez Dispatcher.BeginInvoke. Par exemple :

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

    void Test()
    {
    MessageBox.Show("Test", MessageBoxButton.OK);
    }
  14. MultiScaleImage.ZoomAboutLogicalPoint n'effectue pas de rendu de la scène mise à jour lorsque MultiScaleImage.UseSprings est défini sur False. Cela peut poser problème si un autre élément ou une autre logique brouille la scène, par exemple une animation. Toutefois, si ce problème n'est pas résolu par d'autres actions provoquant le brouillage de la scène, deux solutions sont possibles :
    • Placez l'appel ZoomAboutLogicalPoint entre les ensembles UseSprings si UseSprings est défini sur False (MultiScaleImage = false) et que vous utilisez la méthode MultiImageScale.ZoomAboutLogicalPoint. Puis utilisez l'exemple de code suivant :
      deepZoomImage.UseSprings = true;
      deepZoomImage.ZoomAboutLogicalPoint(1.5, 0.5, 0.5);
      deepZoomImage.UseSprings = false;

      En plaçant ZoomAboutLogicalPoint entre deux valeurs UseSprings avec le dernier paramètre défini sur False, la désactivation d'UseSprings est conservée et l'échelle est mise à jour.
    • -Ou- L'implémentation managée de la fonction de zoom et de panoramique ZoomAboutLogcialPoint n'est pas affectée par ce problème lors de l'utilisation de la propriété ViewportWidth ou ViewportOrigin. L'implémentation managée suivante de ZoomAboutLogicalPoint utilise ViewportWidth et ViewportOrigin pour résoudre ce problème de rendu :
      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. Soyez attentif lors de l'utilisation d'initialiseurs de type statique (également connus sous le nom de constructeurs de classe). Si un initialiseur de type statique appelle une opération de blocage directement ou indirectement, cela peut provoquer un interblocage et la fermeture de l'application. Par exemple, si l'initialiseur statique appelle DateTime.Now, l'application se ferme car l'API utilise un verrouillage interne pour assurer la cohérence du thread. La solution consiste à utiliser un constructeur d'instance qui ne peut contrôler et initialiser les données qu'une seule fois.
  16. Lorsque le chargement d'un assembly d'utilisateur par l'assembly de la plateforme échoue, aucune exception n'est levée et la perte de données est difficilement détectable. Cela peut se produire lorsque la plateforme tente de sérialiser un élément dans l'assembly d'utilisateur.
  17. La propriété PhoneApplicationPage.State de la valeur est conservée uniquement si elle inclut des valeurs. Si vous définissez une seule valeur State pour la page, accédez à plusieurs pages les unes après les autres, puis supprimez la valeur de la collection State, lorsque vous naviguez entre les pages, la propriété est toujours présente car l'état n'a pas été conservé. Une des solutions consiste à concevoir l'application de manière à définir les valeurs d'état sur null, plutôt que de les supprimer. Une autre alternative est de conserver une seule valeur factice dans la collection de manière permanente afin que le dictionnaire State soit toujours enregistré.
  18. Pour les projets existants, le contrôle ListViewItem a été supprimé. Il se peut que vous deviez supprimer la définition de style correspondante du fichier App.xaml. Recherchez l'élément mpc:ListViewItem.
  19. Dans cette version, les rappels image (c.-à-d. la gestion de l'événement CompositionTarget.Rendering) doivent être utilisés avec parcimonie en raison de performances peu optimales.
  20. Comme ApplicationBar et les classes associées ne peuvent pas participer à la liaison de données et aux portées de noms, vous devez utiliser code-behind si vous souhaitez modifier une propriété par programme.
  21. Lorsque Silverlight et Windows Phone possèdent un espace de noms identique, le fait d'appuyer sur la touche d'aide F1 permet d'accéder à Silverlight. Il s'agit du comportement par défaut de Visual Studio 2010.

Visual Studio 2010 Express pour Windows Phone

  1. Pour modifier l'espace de noms de votre application, vous devez modifier les fichiers [nom_projet].csproj, App.xaml et App.xaml.cs.
    • Dans le fichier [nom_projet].csproj, recherchez la balise <SilverlightAppEntry> et modifiez le nom de l'espace de noms. Remplacez <SilverlightAppEntry>Ancien_espace_de_noms.App</SilverlightAppEntry> par <SilverlightAppEntry>Nouvel_espace_de_noms.App</SilverlightAppEntry>.
    • Dans le fichier App.xaml, recherchez la ligne x:Class=”Ancien_espace_de_noms.App" et remplacez-la par x:Class="Nouvel_espace_de_noms.App".
    • Dans le fichier App.xaml.cs, recherchez la déclaration d'espace de noms et remplacez Ancien_espace_de_noms par Nouvel_espace_de_noms.App.
    • Sélectionnez l'espace de noms et la classe appropriés en tant qu'objet de démarrage dans les propriétés du projet.
  2. Lorsque vous déverrouillez le téléphone à l'aide de l'outil Windows Phone Developer Registration, il se peut qu'un message d'erreur indique que le nom de l'appareil est déjà utilisé. Cela peut se produire si le même appareil a déjà été déverrouillé à l'aide du même compte. Pour résoudre ce problème, deux solutions sont possibles avant de procéder au déverrouillage de l'appareil :
    • Utilisez le client Zune pour renommer l'appareil.
    • -ou- Supprimez l'inscription de l'appareil. Pour déverrouiller l'appareil, accédez au portail Windows Phone 7 pour les développeurs, cliquez sur Vos applis, connectez-vous à votre compte, puis cliquez sur Inscription de l'appareil.
  3. Dans certains cas, il se peut que le système ne dispose plus de suffisamment de mémoire au cours de l'empaquetage XAP. Il se peut également que l'empaquetage XAP lève une exception de mémoire insuffisante. Cela se produit le plus généralement dans le cadre de projets très volumineux ou qui incluent un nombre important de fichiers en cours d'empaquetage vers XAP, et aussi bien pour les projets Silverlight que pour les projets XNA Framework. Pour résoudre ce problème, exécutez l'une des actions suivantes :
    • Ajoutez de la mémoire.
      –ou–
    • Utilisez un système d'exploitation 64 bits. Utilisez VPDExpress.exe au lieu de devenv.exe. Exécutez des versions en dehors de Visual Studio. Fermez TFS et d'autres fenêtres pour réduire l'encombrement mémoire de devenv.exe.
  4. Les Outils du développeur Windows Phone affichent les composants ci-dessous. Toutefois, ceux-ci ne sont pas pris en charge.
    • Profileur
    • IntelliTrace
    • Lab Management
    • Tests
    • Composants de base de données
      • Afficher la source de données
      • Ajouter une nouvelle source de données
      • Comparaison de schémas

Émulateur Windows Phone

  1. Prise en charge GPU : l'émulateur Windows Phone prend en charge l'émulation des appareils GPU à l'aide du GPU hôte d'un ordinateur prenant en charge DDI version 10 (et supérieur) et DirectX version 10 (et supérieur). Sur tous les autres ordinateurs, l'émulateur reprend l'émulation logicielle qui n'est pas prise en charge sur la plateforme. Pour plus d'informations, consultez la rubrique Setup and System Requirements for Windows Phone Emulator (en anglais) de la documentation relative aux Outils du développeur Windows Phone sur le site MSDN.
    Vous pouvez vérifier si votre ordinateur prend en charge la configuration recommandée en exécutant dxdiag à partir d'une fenêtre de ligne de commande.

    Sous Windows Vista SP2, les quatre mises à jour décrites dans l'article KB 971644 sont également requises pour la prise en charge du déploiement vers l'émulateur Windows Phone.
    Les mises à jour suivantes décrites dans l'article KB 971644 sont requises pour les systèmes d'exploitation Windows Vista x86 :

    Les mises à jour suivantes décrites dans l'article KB 971644 sont requises pour les systèmes d'exploitation Windows Vista x64 :

  2. Si le fuseau horaire de l'ordinateur hôte change lors de l'exécution de l'émulateur Windows Phone, le fuseau horaire de ce dernier n'est pas mis à jour.
  3. Cette version ne prend pas en charge Fiddler. Si vous configurez Fiddler pour assurer le suivi de l'ensemble du trafic réseau, l'émulateur ne peut pas se connecter au réseau. Pour vous connecter à l'intranet à partir de l'émulateur Windows Phone lorsque Fiddler assure le suivi du trafic réseau sur l'ordinateur hôte, exécutez les étapes ci-dessous. Toutefois, Fiddler ne surveille pas le trafic réseau de l'émulateur Windows Phone.
    • Configurez Fiddler de manière à assurer le suivi du trafic Internet uniquement.
    • Utilisez les paramètres de proxy manuel et ignorez le serveur proxy pour les adresses locales.
    • L'émulateur sera alors en mesure de se connecter à un site intranet.
  4. Lorsque l'émulateur Windows Phone est en cours d'exécution sous Windows Vista, certains états transitoires audio surviennent en raison de paquets audio perdus lors de la lecture d'un fichier audio (fichier multimédia ou alarme). Ce problème ne se produit pas lorsque l'émulateur est exécuté sous Windows 7.
  5. Lors de l'utilisation de MediaPlayerLauncher sur l'émulateur, le rendu des images vidéo n'a lieu que si vous cliquez de façon continue sur l'interface utilisateur. Par exemple, si vous cliquez, une ou deux images s'afficheront et l'écran deviendra noir. Si vous cliquez de façon continue, l'intégralité de la vidéo s'affichera.
  6. Dans la mesure où l'émulateur ne contient pas tous les composants de Windows Phone 7, certains lanceurs et sélecteurs risquent de fonctionner de manière inattendue (par exemple, e-mail, SMS). Pour plus d'informations, consultez la rubrique Launcher and Chooser Support in Windows Phone Emulator (en anglais).
  7. Multimédia : l'émulateur prend uniquement en charge le conteneur VC-1 (profils WMV simples, principaux et avancés) pour l'encodage de vidéos.
  8. L'émulateur ne prend pas en charge les changements d'orientation lorsque le clavier est activé. Vous devez désactiver le clavier en appuyant sur Pause/Arrêt ou sur Page suivante/Page précédente, puis faire pivoter l'émulateur.
  9. Une instance d'ordinateur virtuel existante de Virtual Box ferme lorsque l'émulateur Windows Phone est lancé sur un ordinateur hôte sur lequel la virtualisation de matériel est activée.
  10. Une instance d'ordinateur virtuel existante de VMWare ferme lorsque l'émulateur Windows Phone est lancé sur un ordinateur hôte sur lequel la virtualisation de matériel est activée.
  11. Pour exécuter des jeux XNA Framework sur l'émulateur sur un ordinateur hôte Windows Vista, Windows Vista SP2 doit être installé. Pour plus d'informations sur les conditions requises pour l'exécution de jeux XNA Framework, consultez la section Débogage/déploiement de Windows Phone et débogage dans XNA Game Studio.

Développement XNA Game

  1. Si la référence à mscorlib est supprimée du projet XNA Game Studio, elle ne peut pas y être ajoutée de nouveau via l'interface Visual Studio. Si vous tentez d'ajouter une référence à l'assembly mscorlib à un projet de jeu XNA Game Studio Windows une fois celle-ci supprimée, le message d'erreur suivant s'affiche : « Impossible d'ajouter une référence à « mscorlib ». Ce composant est déjà automatiquement référencé par le système de génération. »

    Pour les projets de jeu Windows Phone et Xbox 360®, l'ajout d'une référence à l'assembly mscorlib après la suppression de celle-ci ne génère aucun message d'erreur, mais la référence n'est pas ajoutée au projet. Pour tous les projets de jeu XNA Game Studio, la génération échoue et le message d'erreur suivant est affiché : « Le type prédéfini « System.Object » n'est pas défini ou importé. »

    Pour résoudre ce problème, ouvrez le fichier .csproj et rajoutez la référence à cette bibliothèque :

    <Reference Include="mscorlib">
    <Private>False</Private>
    </Reference>
  2. Le paramètre CopyLocal n'est pas pris en charge pour les assemblys XNA Framework des projets déployés vers Windows Phone ou Xbox 360. Pour les projets Xbox 360, les fichiers sont déployés, mais ils ne sont pas nécessaires et peuvent être ignorés. Sous Windows Phone, le fait de définir CopyLocal sur True entraîne la levée d'une exception MissingMethodException, l'absence de certaines fonctionnalités ou l'arrêt immédiat du jeu.
    a. Pour la référence d'assembly Microsoft.Xna.Framework, l'application lève une exception MissingMethodException.
    b. Pour les références d'assembly Microsoft Xna.Framework.Game et Microsoft.Xna.Framework.Graphics, le jeu démarre, mais s'arrête immédiatement.
    c. Pour la référence d'assembly Microsoft.Xna.Framework.Input.Touch, le jeu fonctionne, mais pas les fonctionnalités tactiles.

    Pour résoudre ce problème, définissez la propriété CopyLocal de la référence d'assembly sur False. Pour plus d'informations sur la procédure associée, consultez la rubrique Comment : définir la propriété Copie locale d'une référence.
  3. Dans le cadre du rappel vers BeginGetProfile, le paramètre IAsyncResult possède parfois une propriété AsyncState définie de manière incorrecte sur null, ce qui entraîne la levée d'une exception NullReferenceExeption en cas d'accès à la propriété AsyncState. Pour résoudre ce problème, définissez le paramètre de rappel de BeginGetProfile en tant que délégué. Pour plus d'informations sur la procédure associée, consultez la rubrique Utilisation d'un délégué AsyncCallback pour terminer une opération asynchrone.
  4. L'état d'effet n'est pas copié lors du clonage de Effect pour la propriété Effect et les états de rendu ne sont pas restaurés vers leur état d'origine lorsque l'effet est appliqué lors d'appels vers Mesh.Draw. Les modifications d'état ne sont pas reflétées dans les propriétés d'état de rendu GraphicsDevice et il se peut que les modifications suivantes apportées aux propriétés d'état de rendu GraphicsDevice ne mettent pas à jour l'état du périphérique graphique. Vous pouvez réinitialiser ces états dans certains cas, par exemple lorsque SpriteBatch.Draw est appelé.
  5. Il est impossible d'enregistrer ou de modifier les paramètres Ligne de commande de l'événement avant génération et Ligne de commande de l'événement après génération sous l'onglet Événements de génération de la page Propriétés du projet des projets de contenu XNA Game Studio. Ces champs sont modifiables dans la page Événements de génération mais les paramètres ne sont pas enregistrés. Les développeurs peuvent modifier manuellement le fichier .contentproj pour ajouter des paramètres Ligne de commande de l'événement après génération et Ligne de commande de l'événement avant génération. Ceux-ci s'affichent sous l'onglet Événements de génération dans un champ en lecture seule.
  6. Visual Studio tombe en panne lors de l'ajout de nouveaux chemins d'accès de référence aux projets de contenu à partir de la page Propriétés du projet. Vous pouvez ajouter des chemins d'accès de référence en modifiant manuellement le fichier .contentproj.user.

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


    Une fois les chemins d'accès de référence ajoutés en modifiant manuellement le fichier .contentproj.user, ces paramètres sont visibles sous l'onglet Chemins d'accès de référence des pages de propriété de Visual Studio du projet de contenu.
  7. Si le projet de contenu est référencé par plusieurs projets de jeux ou de bibliothèques de jeux ciblant la même plateforme dans la même solution, l'erreur de génération suivante s'affiche :

    Impossible de copier le fichier {nom_fichier}

    Cette erreur survient car le contenu est supprimé du dossier de sortie de contenu lorsque plusieurs projets ciblant la même plateforme incluent une référence à un projet de contenu partagé. Pour résoudre ce problème, ajoutez la référence au projet de contenu à un projet de bibliothèque de jeux, puis référencez la bibliothèque de jeux à partir de l'un des projets de la solution.
  8. Les développeurs doivent désactiver l'analyse D3DX pour exécuter PIX pour l'outil d'analyse des performances Windows.
  9. Les projets de test Visual Studio 2010 ne sont pas exécutés s'ils font référence à un projet de contenu XNA Game Studio. Les développeurs doivent désactiver les projets de contenu lors de l'utilisation de l'Assistant Création de test.
  10. XNA Game Studio ne prend plus en charge les fichiers FBX contenant plusieurs déclenchements d'animation. Un jeu affiche plusieurs copies du premier déclenchement d'animation si un fichier FBX en spécifie plusieurs.
  11. Les développeurs XNA Game doivent envisager l'implémentation de leurs propres écrans de démarrage.
    Ce changement n'affecte pas l'exécution des jeux. Dans les jeux XNA contenant un fichier SplashScreenImage.jpg, l'écran de démarrage ne s'affiche que brièvement, ce qui peut influencer négativement l'expérience de jeu. L'implémentation de votre propre écran de démarrage dans le code de démarrage du jeu permet d'en contrôler le moment et la durée d'affichage. Prenez en compte les conseils suivants lors de la création d'écrans de démarrage pour vos jeux :
    • L'assembly d'entrée doit être peu volumineux. Tous les assemblies d'entrée étant signés et vérifiés au démarrage de l'application, ce conseil est valable pour les jeux Silverlight ou XNA. La validation est TRÈS onéreuse. Par défaut, Silverlight ajoute des ressources (textures, etc.) en tant que ressources managées à l'assembly d'entrée. Plutôt que d'ajouter des ressources à l'assembly, vous devez les ajouter manuellement au fichier XAP.
    • Dans Initialize(), procédez comme suit :
      1. Appelez base.Initalize(). Cette opération crée la propriété GraphicsDevice.
      2. Chargez votre texture. Pour accélérer le chargement des images, suivez les conseils suivants :
        • Définissez la taille de la texture en fonction de la résolution et de l'orientation cibles du jeu.
        • Configurez la texture de sorte qu'elle soit redimensionnée automatiquement à la puissance 2.
        • Utilisez le format compressé DXT.
      3. Créez un SpriteBatch.
      4. Effectuez le rendu de la texture.
      5. Appelez GraphicsDevice.Present().
    • Dans Draw(), continuez à dessiner la texture de départ, puis (ceci est facultatif), basculez vers une animation en cours de chargement dès que ces ressources sont chargées.

Débogage/déploiement de Windows Phone et débogage dans XNA Game Studio

  1. XNA Game Studio recherche la présente d'une carte graphique DirectX 10 ou une version ultérieure avec un pilote WDDM 1.1 avant d'effectuer le déploiement vers l'émulateur Windows Phone. Si la carte graphique ne prend pas en charge DirectX 10 ou une version ultérieure, le message suivant s'affiche dans la fenêtre d'erreurs de Visual Studio :
    Échec du déploiement avec l'erreur suivante : La carte vidéo actuelle ne satisfait pas les conditions requises pour l'exécution des applications XNA Framework.

    Vous pouvez utiliser l'outil DirectX Caps Viewer pour déterminer si une carte graphique prend en charge DirectX 10 ou une version ultérieure si un pilote WDDM 1.1 est installé. Cet outil est disponible pour téléchargement via le Kit de développement DirectX.

    Pour déterminer si une carte graphique prend en charge DirectX 10 ou une version ultérieure, procédez comme suit :
    1. Dans DirectX Caps Viewer, développez le dossier Appareils DXGI 1.1, puis le dossier situé au niveau suivant correspondant à la carte vidéo. Ce dossier inclut des sous-dossiers correspondant à Direct3D® 10, Direct3D 10.1 et à des logiciels similaires.
    2. Développez le dossier Direct3D 10.1 et recherchez le champ de niveau de fonctionnalité. Ce dossier inclut une entrée pour D3D10_FEATURE_LEVEL_10_0 ou D3D10_FEATURE_LEVEL_10_1 si la carte graphique prend en charge DirectX 10 ou une version ultérieure. Si le champ de niveau de fonctionnalité indique un niveau de fonctionnalité égal ou inférieur à 9_n, les fonctionnalités Direct3D requises par l'émulateur Windows Phone ne sont pas prises en charge.

    Si ce message d'erreur s'affiche et que votre carte graphique prend en charge DirectX 10, tel qu'indiqué par l'outil DirectX Caps Viewer, vous devez consulter le site Web du fabricant de la carte graphique pour vérifier si un nouveau pilote est disponible.

    Sous Windows Vista SP2, les quatre mises à jour décrites dans l'article KB 971644 sont également requises pour la prise en charge du déploiement vers l'émulateur Windows Phone.
    Les mises à jour suivantes décrites dans l'article KB 971644 sont requises pour les systèmes d'exploitation Windows Vista x86 : Les mises à jour suivantes décrites dans l'article KB 971644 sont requises pour les systèmes d'exploitation Windows Vista x64 :
  2. Sur les appareils Windows Phone, VertexBuffer.GetData retourne des résultats erronés pour la surcharge de cette méthode qui permet aux développeurs de définir le paramètre vertexStride. L'accès aux données avec cette surcharge retourne les données correctes pour les jeux de l'émulateur Windows Phone, Windows et Xbox 360. Pour les jeux Windows Phone, la solution consiste à lire la totalité de la mémoire tampon du vertex plutôt que d'utiliser le stride du vertex pour rechercher des éléments.
  3. MediaPlayer.Play lève une exception InvalidOperationException si vous exécutez le client Zune sur votre ordinateur tout en effectuant un débogage ou en jouant à des jeux sur un téléphone Windows Phone relié par câble. Cette exception affiche un message d'exception incorrect : « Échec de l'écoute du morceau. Vérifiez que celui-ci n'est pas protégé par la gestion des droits numériques. Les morceaux protégés par la gestion des droits numériques ne sont pas pris en charge pour les jeux de créateur. » Ce message d'exception est incorrect et s'affiche même si le morceau n'est pas protégé par la gestion des droits numériques. Pour résoudre ce problème, fermez le client Zune lorsque vous effectuez un débogage ou jouez à un jeu sur un téléphone Windows Phone relié par câble.
  4. Si le jeu utilise le mode Paysage, l'émulateur Windows Phone retourne de manière incorrecte le contenu de la mémoire tampon d'arrière-plan lorsque la mémoire tampon est restituée au démarrage ou à la fermeture du jeu. Les images restituées sont retournées de haut en bas ou de gauche à droite en fonction du paramètre DisplayOrientation. Ce comportement n'a lieu qu'au cours du démarrage ou de la fermeture du jeu dans l'émulateur.
  5. Dans l'émulateur Windows Phone, le canal d'index d'os SkinnedEffect doit être spécifié dans l'un des formats d'élément de vertex Integer (Byte4, Short2 ou Short4). Vous ne pouvez pas utiliser ce même ensemble de formats de données Integer pour les autres canaux d'entrée du nuanceur, tels que les couleurs, les positions et les coordonnées de texture sur l'émulateur. Vous pouvez utiliser n'importe quel format de vertex avec tout type de canal d'entrée de nuanceur sur les appareils Windows Phone, et sous Xbox 360 et Windows.
  6. Si un projet n'a jamais été déployé et que le projet de jeu n'est pas configuré à des fins de génération et de déploiement, le déploiement du jeu échoue avec le message d'erreur suivant : « Impossible de lancer l'application à des fins de débogage. Vérifiez qu'elle est installée sur l'appareil cible. » Si le jeu a déjà été déployé sur l'appareil, aucun message d'erreur ne s'affiche mais le jeu n'est pas déployé et la version déployée précédemment est lancée lors du débogage. Pour configurer un projet de jeu de sorte qu'il effectue une génération ou un déploiement, procédez comme suit :
    1. Dans Visual Studio® 2010 Express pour Windows Phone, cliquez sur Outils, Paramètres, puis Paramètres avancés pour activer la liste déroulante Configurations de solutions.
    2. Dans la liste déroulante Configurations de solutions de la barre d'outils standard, sélectionnez Gestionnaire de configurations.
    3. Activez les cases à cocher Générer et Déployer.

 

Déclarations de copyright et de confidentialité

Les informations contenues dans le présent document, y compris les URL et autres références de sites Web Internet, peuvent être modifiées sans préavis. Sauf mention contraire, les sociétés, organisations, produits, noms de domaine, adresses e-mail, logos, personnes, lieux et événements mentionnés ici à titre d’exemple sont purement fictifs. Aucune association à tout(e) société, organisation, produit, nom de domaine, adresse électronique, logo, personne, lieu ou événement réel n’est intentionnelle ou volontaire. Il appartient à l’utilisateur de veiller au respect de toutes les dispositions légales applicables en matière de copyright. Sans limitation des droits sous copyright, aucune partie de ce document ne peut être reproduite, stockée ou introduite dans un système de recherche automatique, ni transmise sous quelque forme ou par quelque moyen que ce soit (électronique, mécanique, photocopie, enregistrement ou autre), dans quelque but que ce soit, sans l'autorisation écrite de Microsoft Corporation.

Selon les cas, Microsoft peut détenir des brevets (ou avoir déposé des demandes de brevets), ainsi que des marques, des copyrights ou autres droits de propriété intellectuelle sur les questions évoquées dans ce document. Sauf disposition contraire expresse dans un contrat de licence écrit concédé par Microsoft, la communication de ce document à son destinataire ne confère à ce dernier aucun droit sur les brevets, marques, copyrights et autres droits de propriété intellectuelle.

© 2010 Microsoft Corporation. Tous droits réservés.

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 et Zune sont des marques commerciales du groupe de sociétés Microsoft.

Toutes les autres marques commerciales sont la propriété de leurs détenteurs respectifs.