#NUGET : utiliser des binaries différents pour Windows 8 et pour Windows 8.1 dans un package Nuget
Si comme nous, vous utilisez des packages nugets pour publier des frameworks, il peut être utile de fournir dans un même package des assemblies différentes pour Windows 8.0 et Windows 8.1. Plutôt que de chercher dans la doc de Nuget où vous ne trouverez pas de réponse vraiment précise, voici comment faire.
L’astuce
Lorsque vous définissez les fichiers à inclure dans votre package nuget, une cible (target) est précisée :
<file src="\NousA.InfiniteSquare\NousA.InfiniteSquare.dll" target="lib\netcore45" />
Dans ce cas, cette dll ciblera à la fois Windows 8.0 et Windows 8.1 car “netcore45” est la plateforme minimale.
Pour ajouter une dll spécifiquement utilisée à partir de Windows 8.1 (par exemple si vous utilisez le nouveau tout beau, génial httpclient) il faudra déclarer un fichier pour la plateforme netcore451.
C’est donc tout simple :
<file src="NousA.InfiniteSquare.win80\NousA.InfiniteSquare.dll" target="lib\netcore45" /> <file src="$NousA.InfiniteSquare.win81\NousA.InfiniteSquare.dll" target="lib\netcore451" />
Attention aux contrôles XAML
Lorsque vous ajoutez un contrôle XAML, vous spécifiez aussi son fichier XAML. Windows8.1 propose un nouveau format précompilé pour le XAML qui apporte de meilleures performances : le XBF. Vous n’en avez peut-être jamais entendu parler car tout est fait automatiquement pour vous mais c’est bien là
Attention donc dans vos projets nuget de bien incorporer ces nouveaux fichiers XBF plutôt que des XAML comme auparavant :
On a donc :
<file src="NousA.InfiniteSquare.win80\NousA.InfiniteSquare.dll" target="lib\netcore45" /> <file src="NousA.InfiniteSquare.win80\MonTemplate.xaml" target="lib\netcore45\MonTemplate.xaml" /> <file src="$NousA.InfiniteSquare.win81\NousA.InfiniteSquare.dll" target="lib\netcore451" /> <file src="NousA.InfiniteSquare.win80\MonTemplate.XBF" target="lib\netcore45\MonTemplate.XBF" />
Merci Jérémy pour ta persévérance sur le sujet, cela va parfaitement bien avec notre nuget (vraiment ) sécurisé.
Commentaires