Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Faire le ménage sur sa machine de dev Xamarin

Travailler dans un environnement propre est essentiel. Avoir toutes les mises à jours c’est super. Mais encore faut-il de temps en temps faire le ménage !

Faire le ménage !

Voici une activité saine et édifiante que chacun doit être capable de faire sans attendre que d’autres le fassent à leur place ! Surtout pour ceux qui sont les seuls à utiliser leur machine de développement, forcément…

Visual Studio, Xamarin Studio, Android, Nuget, les scories de la compilation (répertoires bin et obj) etc, on en fabrique des déchets en développant ! Et surtout sur un SSD l’octet coûte cher et souvent la place finit par manquer. Et les nettoyeurs de Windows ou les trucs à la CCleaner (infectés en ce moment, faites attention !) n’y peuvent rien car ils ne savent pas quoi supprimer dans ce fatras ultra technique.

Reste donc à faire la poussière soi-même…

Avertissement : comme toute action de suppression peut avoir des conséquences non voulues (notamment en cas d’erreur de manipulation) effectuez toujours une sauvegarde de votre travail avant une session de nettoyage.

Le cache Nuget

Visual Studio sait recharger les packages qui lui manque. Profitons de cet automatisme pour supprimer le cache de tous les packages de temps en temps. Sauf si vous voulez développer en mode déconnecté à la campagne sous une tente, VS ira rechercher tout seul ponctuellement les packages qui manquent.

Supprimez (en partie, voir plus bas) le contenu des répertoires suivants :

Sur PC

  • C:\Users\%USERPROFILE%\AppData\Local\XamarinBuildDownloadCache
  • C:\Users\%USERPROFILE%\AppData\Local\Xamarin

Sur Mac

  • ~/.local/share/Xamarin

Attention ! Ne supprimez pas tout et n’importe quoi ! Dans ces répertoires ce qui nous intéresse ici ce sont les sous-répertoires Xamarin.* et zips comme on peut le voir sur la capture ici :

image

Le SDK Android

Le SDK Android est certes utile mais pas forcément toutes les versions que vous n’utilisez plus ou pas. De même que les émulateurs Android ne vous servent à rien si vous utilisez celui de Microsoft. Il est donc judicieux de supprimer tous les vieux SDK surtout qu’il est facile de les télécharger à nouveau via le SDK Manager si jamais on en a besoin.

Ne supprimez pas tout ! Juste les SDK spécifiques aux plateformes inutilisées et les avd (images d’émulateur) qui ne vous servent pas/

Tout cela se trouve en général dans le répertoire suivant sur PC :

  • C:\Program Files (x86)\Android\android-sdk

Les caches cachés !

Un cache rempli une fonction qui ne l’oblige pas à être lui-même caché, pourtant beaucoup de caches sont cachés ! C’est le cas de ceux de Xamarin et Visual Studio. Surtout si vous avez mis à jour votre machine depuis VS2013 ou VS2015 il y a des chances que vous puissiez récupérer quelques gigas en vidant les répertoires suivants :

Sur PC

  • C:\Users\%USERPROFILE%\AppData\Local\MonoDevelop-4.0\Cache\TempDownload

Sur Mac

  • ~/Library/Caches/XamarinStudio-6.0/TempDownload
  • ~/Library/Caches/VisualStudio/7.0/TempDownload

Les Bin et les Obj

Ces sous-produits de la compilations sont très encombrants. Et ils ne servent qu’à cela, compiler. Pour tous les projets stockés, tous ceux qui ne sont plus actifs, et même souvent pour les projets en cours il est plus qu’utile de supprimer ces répertoires qui sont souvent énormes.

Pour les anciens projets stockés, de toute façon si vous souhaitez faire des modifs ou autres il faudra bien compiler, donc générer à nouveau automatiquement le couple Bin/Obj. La suppression ne porte donc pas préjudice.

Concernant les projets en cours cela peut s’avérer salutaire aussi. J’ai remarqué qu’après avec ajouté puis supprimé des packages, après mis à jour d’autres packages, etc, il peut subsister dans Bin et Obj des choses qui peuvent soit provoquer des plantages absolument pas liés à l’état réel de votre appli ou, au contraire, ces mêmes trucs qui trainent peuvent donner l’impression que tout marche alors qu’une fois déployée l’appli ne marchera pas. Ce n’est pas très courant mais je l’ai vécu plusieurs fois. Donc un ménage du Bin/Obj de temps en temps sur un projet en cours est plutôt une bonne idée à mon avis.

la technique que je vais présentée doit absolument se faire sur un sous-répertoire de votre machine, jamais à la racine du système. Et comme toujours avant toute suppression effectuez une sauvegarde de votre travail avant (après c’est moins intéressant c’est sûr…).

Si je prends mon répertoire principal de travail dans lequel j’ai déjà du ménage régulier qui est fait cela donne :

image


Rien de trop affolant ici car comme je le disais c’est un espace dans lequel je fais souvent le ménage et qui ne contient que l’en-cours, le reste est archivé sur le réseau ailleurs. Mais +65K fichiers et près de 8Go alors que mon code brut doit peser en dizaine de Mo au max, cela en fait des choses inutiles ! Et je ne parle pas de répertoires plus gros dans lesquels le ménage n’a jamais été fait ou de repositories GitHub par exemple.

Je le répète ne faites jamais la manip ci-dessous sur une racine système !

  • Lancez PowerShell en mode administrateur (vous comprenez la prise de risque donc).
  • Placez vous dans le sous-répertoire à nettoyer (depuis la console PowerShell)
  • Tapez: Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
  • puis validez.

image

Il n’y a pas d’écho, il faut attendre que l’invite de commande s’affiche à nouveau pour savoir que c’est terminé. Cela peut durer un bon moment sur de gros répertoires et sur des disques durs classiques (même avec un SSD cela n’est pas instantané).

On relance une vérification du répertoire :

image


Même sur un répertoire régulièrement entretenu et ne contenant pas de vieux projets (ils sont archivés ailleurs) de 8Go on passe à 3,66 Go, un gain de 50% environ !

Si vous voulez faire la même chose sur un Mac les manips sont bien entendu différentes. Joe Sauve a écrit un papier sur ce sujet (en anglais mais c’est plein de captures écran) que je ne vais pas reprendre ici, suivez le lien et vous saurez tout: Remove obj and bin folders via OS X Finder. Vous verrez que c’est moins simple que sur un PC ! Bricoler avec des procédures dans le Bash est largement moins cool que PowerShell. Mais vu la place à récupérer le jeu en vaut la chandelle !

Sauvegardez !

Une petite couche encore : avant de faire quoi que ce soit, sauvegarder vos données. Une mauvaise manip est vite arrivée et c’est le drame.

D’ailleurs faites toujours des sauvegardes, tout le temps, sur plusieurs machines, plusieurs disques différents donc certains ne sont même pas branchés en permanence. Placez-en ailleurs, dans une autre maison, dans votre coffre en Suisse si vous en avez un, etc. Un truc tourne mal, on panique on sort un backup, on cafouille on le grille et c’est fini… Ici ce n’est pas de la prudence raisonnée qu’il faut avoir, soyez carrément paranoïaque !

Conclusion

Ne stressez pas trop quand même… Nous sommes entre pros ici, vous devriez vous en sortir sans tout déglinguer Smile

Et puis prudence est mère de sureté mais elle ne doit pas être mère d’immobilisme … Que cela ne vous interdise pas, une fois les précautions prises, de récupérer des Go d’espace libre sur votre disque de travail !

Stay Tuned !

blog comments powered by Disqus