Loupe

#Windows Store apps : comment référencer un SDK sans utiliser celui déclaré au niveau “machine”

Quotidiennement, j’utilise beaucoup de SDK dans mes applications Windows Store : SQLite, le player framework et ceux fournis par Microsoft comme le Behavior SDK. Ces derniers sont définis au niveau de mon PC et une seule et même version est donc disponible pour tous mes projets. Dans cet article nous verrons pourquoi je n’aime pas ça et comment définir et utiliser une version différente par projet.

 

Pourquoi je n’aime pas avoir une seule version d’un SDK par machine !

 

Cela me force à avoir la même version du SDK sur TOUS mes projets alors que je n’en ai pas forcément envie. Pourquoi devrais-je migrer obligatoirement un projet vers une nouvelle version d’un SDK alors que je veux juste le maintenir ? De ce côté là, je préfère bien plus le fonctionnement avec Nuget où je suis complétement libre de choisir le moment où je migre vers de nouvelles versions.

 

Cela m’empêche de faire des builds automatisés. Bon ce n’est pas tout à fait vrai, mais en tout cas, cela me force à installer l’extension sur la machine de build et de m’assurer d’avoir la bonne version de celle-ci. Ce n’est pas toujours possible de le faire sur des machines partagées entre plusieurs projets.

 

Mon code source ne suffit pas en lui même. Lorsque je récupère un projet sur TFS (ou GIT, ou autre Smile) j’apprécie qu’il compile tout de suite ou au moins au deuxième esssai lorsque j’utilise le système de restauration des packages de Nuget. Dans le cas des SDKs, je suis obligé de deviner le site où aller chercher l’extension à télécharger et à installer. Je peux bien sur mettre l’installateur dans le controleur de code source mais avouons que ce n’est pas dans nos habitudes…

 

 

Comment s’en passer et définir une extension par projet ?

 

La solution existe et elle est même documentée sur MSDN !

La première étape consiste à placer les fichiers au bon endroit, avec la bonne hiérarchie à côté de votre solution. Dans notre cas, je vais aller chercher le dossier “SQLite.WinRT81” à cet endroit “C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs” pour le placer dans une hiérarchie de dossiers “Extensions\Windows\v8.1\ExtensionSDKs” à côté de ma solution. Attention donc de bien respecter cette hiérarchie! Seul le nom du premier dossier (Extension) est complétement arbitraire ici. On se retrouve donc avec cette hiérarchie :

image

 

Ensuite, il faut indiquer à VisualStudio qu’il peut aller chercher des extensions à cet endroit en ajoutant une propriété MSBuild “SDKReferenceDirectoryRoot” à votre projet. On prendra aussi soin de laisser la valeur par défaut (on ne sait jamais).  Pour cela, on l’édite à la main et on ajoute ces lignes de code à la fin du fichier. :

<PropertyGroup>
  <SDKReferenceDirectoryRoot>
    $(SolutionDir)Extensions;$(SDKReferenceDirectoryRoot)
  </SDKReferenceDirectoryRoot>
</PropertyGroup>

 

 

Une fois cela fait, il suffit de recharger le projet et de référencer normalement l’extension !

image

 

En éspérant que cela vous aide Smile

Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus