Partager via


Mise à jour des applications Mac existantes

La mise à jour d’une application existante pour utiliser l’API unifiée nécessite des modifications apportées au fichier projet lui-même, ainsi qu’aux espaces de noms et API utilisés dans le code de l’application.

La route à 64 bits

Les nouvelles API unifiées sont nécessaires pour prendre en charge les architectures d’appareils 64 bits à partir d’une application Xamarin.Mac. Depuis le 1er février 2015, Apple exige que toutes les nouvelles soumissions d’applications au Mac App Store prennent en charge les architectures 64 bits.

Xamarin fournit des outils pour Visual Studio pour Mac et Visual Studio afin d’automatiser le processus de migration de l’API classique vers l’API unifiée, ou vous pouvez convertir manuellement les fichiers projet. Bien que l’utilisation de l’outil automatique soit fortement suggérée, cet article aborde les deux méthodes.

Avant de commencer...

Avant de mettre à jour votre code existant vers l’API unifiée, il est vivement recommandé d’éliminer tous les avertissements de compilation. De nombreux avertissements dans l’API Classique deviennent des erreurs une fois que vous migrez vers Unified. Les corriger avant de commencer est plus facile, car les messages du compilateur de l’API classique fournissent souvent des conseils sur la mise à jour.

Mise à jour automatisée

Une fois les avertissements corrigés, sélectionnez un projet Mac existant dans Visual Studio pour Mac ou Visual Studio, puis choisissez Migrer vers l’API unifiée Xamarin.Mac dans le menu Projet. Par exemple :

Choose Migrate to Xamarin.Mac Unified API from the Project menu

Vous devrez accepter cet avertissement avant l’exécution de la migration automatisée (vous devez évidemment vous assurer que vous disposez de sauvegardes/contrôle de code source avant de vous lancer dans cette aventure) :

Agree to this warning before the automated migration will run

Il existe deux types Target Framework pris en charge qui peuvent être sélectionnés lors de l’utilisation de l’API unifiée dans une application Xamarin.Mac :

  • Xamarin.Mac Mobile Framework : il s’agit du même framework .NET paramétré utilisé par Xamarin.iOS et Xamarin.Android prenant en charge un sous-ensemble de l’infrastructure de bureau complète. Il s’agit de l’infrastructure recommandée, car elle fournit des binaires moyens plus petits en raison d’un comportement de liaison supérieur.
  • Xamarin.Mac .NET 4.5 Framework : ce framework est à nouveau un sous-ensemble de l’infrastructure Desktop . Toutefois, il supprime beaucoup moins l’infrastructure de bureau complète que l’infrastructure Mobile et doit « fonctionner simplement » avec la plupart des packages NuGet ou des bibliothèques tierces. Cela permet au développeur de consommer des assemblys de bureau standard tout en utilisant une infrastructure prise en charge, mais cette option produit des ensembles d’applications plus volumineux. Il s’agit de l’infrastructure recommandée dans laquelle les assemblys .NET tiers sont utilisés qui ne sont pas compatibles avec Xamarin.Mac Mobile Framework. Pour obtenir la liste des assemblys pris en charge, consultez notre documentation assemblys .

Pour plus d’informations sur les frameworks cibles et les implications de la sélection d’une cible spécifique pour votre application Xamarin.Mac, consultez notre documentation frameworks cibles.

L’outil automatise essentiellement toutes les étapes décrites dans la section Mise à jour manuellement présentée ci-dessous et est la méthode suggérée de conversion d’un projet Xamarin.Mac existant en API unifiée.

Étapes de mise à jour manuelle

Là encore, une fois les avertissements corrigés, procédez comme suit pour mettre à jour manuellement les applications Xamarin.Mac pour utiliser la nouvelle API unifiée :

1. Mettre à jour le type de projet et la cible de build

Modifiez la saveur du projet dans vos fichiers csproj de 42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23 vers A3F8F2AB-B479-4A4A-A458-A89E7DC349F1. Modifiez le fichier csproj dans un éditeur de texte, en remplaçant le premier élément de l’élément <ProjectTypeGuids> comme indiqué :

Edit the csproj file in a text editor, replacing the first item in the ProjectTypeGuids element as shown

Modifiez l’élément Import qui contient Xamarin.Mac.targetsXamarin.Mac.CSharp.targets comme indiqué :

Change the Import element that contains Xamarin.Mac.targets to Xamarin.Mac.CSharp.targets as shown

Ajoutez les lignes de code suivantes après l’élément <AssemblyName> :

<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<TargetFrameworkIdentifier>Xamarin.Mac</TargetFrameworkIdentifier>

Exemple :

Add these lines of code after the <AssemblyName> element

2. Mettre à jour les références de projet

Développez le nœud Références du projet d’application Mac. Il affiche initialement une référence *broken- XamMac similaire à cette capture d’écran (car nous venons de modifier le type de projet) :

It will initially show a broken- XamMac reference similar to this screenshot

Cliquez sur l’icône d’engrenage en regard de l’entrée XamMac, puis sélectionnez Supprimer pour supprimer la référence rompue.

Ensuite, cliquez avec le bouton droit sur le dossier Références dans le Explorateur de solutions, puis sélectionnez Modifier les références. Faites défiler vers le bas de la liste des références et placez une case activée en plus de Xamarin.Mac.

Scroll to the bottom of the list of references and place a check besides Xamarin.Mac

Appuyez sur OK pour enregistrer les modifications apportées aux références de projet.

3. Supprimer MonoMac des espaces de noms

Supprimez le préfixe MonoMac des espaces de noms dans using les instructions ou où un nom de classe a été qualifié complet (par exemple, MonoMac.AppKit devient juste AppKit).

4. Remappage de types

Les types natifs ont été introduits, qui remplacent certains types précédemment utilisés, tels que les instances de System.Drawing.RectangleFCoreGraphics.CGRect (par exemple). Vous trouverez la liste complète des types dans la page des types natifs .

5. Correction des remplacements de méthode

Certaines AppKit méthodes ont eu leur signature modifiée pour utiliser les nouveaux types natifs (par nintexemple). Si les sous-classes personnalisées remplacent ces méthodes, les signatures ne correspondent plus et entraînent des erreurs. Corrigez ces remplacements de méthode en modifiant la sous-classe pour qu’elle corresponde à la nouvelle signature à l’aide de types natifs.

À propos de l’installation

Les considérations suivantes doivent être prises en compte lors de la conversion d’un projet Xamarin.Mac existant de l’API Classique vers la nouvelle API unifiée si cette application s’appuie sur un ou plusieurs composants ou package NuGet.

Composants

Tout composant que vous avez inclus dans votre application doit également être mis à jour vers l’API unifiée ou vous obtiendrez un conflit lorsque vous essayez de compiler. Pour tout composant inclus, remplacez la version actuelle par une nouvelle version du magasin de composants Xamarin qui prend en charge l’API unifiée et effectuez une build propre. Tout composant qui n’a pas encore été converti par l’auteur affiche un avertissement 32 bits uniquement dans le magasin de composants.

Prise en charge par NuGet

Bien que nous avons apporté des modifications à NuGet pour travailler avec la prise en charge de l’API unifiée, il n’y a pas eu de nouvelle version de NuGet. Nous évaluons donc comment obtenir NuGet pour reconnaître les nouvelles API.

Jusqu’à ce moment-là, tout comme les composants, vous devez basculer tout package NuGet inclus dans votre projet vers une version qui prend en charge les API unifiées et effectuer une build propre par la suite.

Important

Si vous avez une erreur sous la forme « Erreur 3 Impossible d’inclure à la fois « monomac.dll » et « Xamarin.Mac.dll » dans le même projet Xamarin.Mac - « Xamarin.Mac.dll » est référencé explicitement, alors que « monomac.dll » est référencé par « xxx, Version=0.0.000, Culture=neutral, PublicKeyToken=null » après avoir converti votre application en API unifiées, il est généralement dû à un composant ou à un package NuGet dans le projet qui n’a pas été mis à jour vers l’API unifiée. Vous devez supprimer le composant existant/NuGet, effectuer une mise à jour vers une version qui prend en charge les API unifiées et effectuer une build propre.

Activation des builds 64 bits des applications Xamarin.Mac

Pour une application mobile Xamarin.Mac convertie en API unifiée, le développeur doit toujours activer la génération de l’application pour les machines 64 bits à partir des options de l’application. Pour obtenir des instructions détaillées sur l’activation des builds 64 bits des applications Xamarin.Mac, consultez le document Considérations relatives à la plateforme 32/64 bits pour obtenir des instructions détaillées sur l’activation des builds 64 bits.

Finissant vers le haut

Que vous choisissiez ou non d’utiliser la méthode automatique ou manuelle pour convertir votre application Xamarin.Mac du classic vers les API unifiées, il existe plusieurs instances qui nécessitent une intervention manuelle supplémentaire. Consultez notre Astuces pour mettre à jour le code vers le document d’API unifiée pour connaître les problèmes connus et contourner les problèmes.