Ajouter une base SQLite à une application Windows universelle

sqlight

Cela fait maintenant un an que Microsoft a sorti les applications universelles pour Windows et Windows Phone, et ce type d’application commence à se démocratiser dans l’univers Windows.

Mais ce n’est pas toujours facile d’utiliser des services communs aux 2 types de projets de l’application universelle : Windows 8.1 et Windows Phone 8.1.

C’est entre autre le cas de SQLite qui possède quelques particularités, mais rien n’est infaisable :

L’application universelle

Si vous lisez cet article j’imagine que vous connaissez déjà les applications universelle, je ne reviendrai donc pas en détails sur le sujet.

Mais pour rappel, si vous avez créé une application de type “universal app” dans Visual Studio vous devriez avoir un projet présentant l’architecture suivante :

universalapp

On se retrouve donc avec 1 partie distincte par plateforme et une partie commune (shared).

Installer SQLite

Malheureusement il n’est pas possible d’installer SQLite comme référence sur la partie commune (ça serait trop facile).

Et les projets Windows 8.1 et Windows phone 8.1 ne sont pas compatibles sur ce point, il va donc falloir ajouter une référence différente à SQLite pour chaque projet. La seule solution pour faire ça est d’installer le SDK de SQLite à Visual Studio pour Windows puis celui pour Windows Phone.

Donc dans un premier temps, je vous conseille de mettre à jour votre Visual Studio (Visual Studio 2013 Update 4).

Puis ensuite, récupérez les packages de SQLite. Ces packages sont des packages VSIX buildés par l’équipe de développement de SQlite :

Une fois ces fichiers téléchargés, les exécuter et lancer l’installation :

installSQLite

Pour vérifier que tout est correctement installé, dans Visual Studio, ouvrir le menu “Tools > Extensions and Updates” et vérifier que les SDKs installés figurent bien dans la liste des extensions :

SQLiteinstalled

Ajouter SQLite à votre projet

Vous êtes maintenant prêt à intégrer SQLite à votre application universelle.

Windows 8.1

Faites un clic droit sur “references” de votre projet Windows 8.1, puis sélectionnez “Add references” :

addreferences

Puis ajoutez la référence “SQlite for Windows Runtime (Windows 8.1)” :

addreferenceWindows 8.1

Windows Phone 8.1

Dans un deuxième temps, on va faire la même manipulation pour la partie Windows Phone : clic droit sur “references” du projet Windows Phone 8.1 :

clicreferences

Puis ajouter la référence “SQLite for Windows Runtime (Windows Phone 8.1)” :

addreferencesWindows Phone8.1

 

Une fois que ces 2 manipulations sont finies vous pouvez vérifier que les références ont bien été ajoutées à vos 2 projets :

verifyreferencs

Warnings

C’est bien beau d’avoir fait tout ça, mais les références indiquent un “warning”, c’est que ça doit pas être si bien intégré que ça !

Et bien oui et non.

En effet si vous essayez de lancer un build, vous allez avoir des erreurs de ce type : “The processor architecture of the project being built “Any CPU” is not supported by the referenced SDK “SQLite.WinRT81, Version=3.8.7.4″.

C’est pas grave ne vous en faites pas. Je ne vais pas rentrer dans les détails du problème mais en gros SQLite ne peut pas être compilé pour n’importe quel type de plateforme (Any CPU).

La solution est donc d’indiquer dans le “Configuration Manager” que la plateforme par défaut est x86 pour les 2 projets, en “debug” et pour les “releases” également. Par contre il ne faut surtout pas mettre x64 par défaut, car ça empêcherait la vue “Designer” de fonctionner dans votre Visual Studio (ce qui est moins pratique).

Et il est où ton “Configuration Manager” ? Et bien justement il est ici, en cliquant sur le menu déroulant de “Debug” :

configurationManager

Une fois la fenêtre ouverte, modifier toutes les plateformes par “x86”.

Et ne vous inquiétez pas, ce n’est pas parce que l’on définie x86 pour faire fonctionner notre projet dans Visual Studio que ça ne fonctionnera pas sur les autres plateformes. Quand vous publierez votre application via le menu “Store > Create App package”, les versions x86, x64 et arm seront automatiquement créées aussi.

generateApp

Et voilà, SQLite est correctement intégré à votre application Universelle.

 

Référence : cet article a été inspiré/traduit/mis à jour depuis l’article de Nicolò Carandini 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Prouve moi que tu es bien humain ->