Skip to content

Instantly share code, notes, and snippets.

@Juansero29
Created February 12, 2021 20:04
Show Gist options
  • Save Juansero29/4da581c88cfe776b5d70a4b06b5d258e to your computer and use it in GitHub Desktop.
Save Juansero29/4da581c88cfe776b5d70a4b06b5d258e to your computer and use it in GitHub Desktop.
DELETE BIN / OBJ SCRIPT
# Consignes d'utilisation de ce script :
#
# - Il faut lancer ce script dans un répertoire qui contient à la racine une solution Visual Studio (.sln)
#
# - Il est préférable que Visual Studio soit fermé pendant que le script se éxécute
#
# - Il est préférable que l'on aie fait un "Get Latest" des fichiers concernées par cette
# solution avant de lancer le script
#
# - Il faut s'assurer que toutes les variables d'environnement systèmes nécessaires soient
# présentes pour pouvoir éxécuter les commandes. À savoir :
# - Team Explorer
# (C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer)
#
# - NuGet
# (.exe à télécharger et mettre, par exemple, dans "C:\path\nuget.exe". Télécharger ici : https://www.nuget.org/downloads (la version stable recommandée))
#
# - MSBuild [Facultatif, pas utilisé car ligne commentée]
# (C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\)
#
# Le script peut résoudre des problèmes avec des solutions Xamarin et Uno, notamment les erreurs
# À la compilation liées au 'Linker' ou aux fichiers '.target'.
$folderPath = '.\'
$value = $false
#$tfPath = "$/TFSProject/Main"
# On parcourt tous les fichiers, et on force le drapeau "IsReadOnly" à faux
"Setting ReadOnly property to false"
Get-ChildItem -Path $folderPath -Include bin,obj -Recurse | ForEach-Object ($_) {
$item = Get-Item -Path $_.FullName
if($item -isnot [System.IO.DirectoryInfo])
{
# Message d'information
#"Setting " + $item.Name + " ReadOnly property to false"
# On set la propriété lecture seule à faux a fin de pouvoir effacer les fichiers qu'on veut
$item.IsReadOnly = $value
}
}
# On re-parcourt tous les fichiers, on inclut seulement ceux qui sont nommées "bin" ou "obj", on efface tous ces items (dossiers) de façon récursive
Get-ChildItem -Path $folderPath -Include bin,obj -Recurse | ForEach-Object ($_) {
if(!$_.FullName.Contains("References\bin"))
{
Remove-Item $_.FullName -Force -Recurse
$_.FullName + " deleted"
}
}
# On parcourt le répertoire où le script a été lancé, et pour chaque fichier ".sln" trouvé, on fait la suite d'actions suivantes...
Get-ChildItem -Path $folderPath | Where-Object { $_.Extension -eq ".sln"} | ForEach-Object ($_) {
# Message d'information
"Getting Latest for " + $_.FullName
# Get Latest / Pull pour corriger des éventuels fichiers qui devaient pas étre supprimés des bin/obj
#tf.exe get $tfPath /recursive
git pull
# Message d'information
"MSBuild Restore"
# On fait un restore MsBuild pour restaurer les paquets énumérés dans le fichier de projet (voir PackageReference) et à partir de MSBuild 16.5+, les projets utilisant packages.config.
# Cette commande n'est disponible que dans NuGet 4.x+ et MSBuild 15.1+, qui sont inclus dans Visual Studio 2017 et les versions ultérieures. À partir de MSBuild 16.5+, cette commande peut également restaurer les projets basés sur packages.config lorsqu'elle est exécutée avec -p:RestorePackagesConfig=true
MsBuild -t:restore
# Message d'information
"Nuget Restoring " + $_.FullName
# On restaure les paquets nuget de la solution pour que tout soit propre quand on réouvre la solution
nuget restore $_.FullName;
# Message d'information
#"Building " + $_.FullName
# On build la solution (pas obligatoire)
# MsBuild $_.FullName -p:Configuration=Debug
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment