Juste un addendum à toutes les bonnes réponses ci-dessus au cas où quelqu'un ne se rendrait pas compte à quel point il est facile en VB / C # d'automatiser l'ensemble du processus jusqu'à l'archive zip.
Il vous suffit donc de saisir une simple application Forms à partir des modèles (si vous n'avez pas encore d'application de ménage) et d'y ajouter un bouton, puis de l'installer sur votre bureau sans vous soucier des paramètres spéciaux ou de quoi que ce soit. C'est tout le code dont vous avez besoin pour attacher au bouton:
Imports System.IO.Compression
Private Sub btnArchive_Click(sender As Object, e As EventArgs) Handles btnArchive.Click
Dim src As String = "C:\Project"
Dim dest As String = Path.Combine("D:\Archive", "Stub" & Now.ToString("yyyyMMddHHmmss") & ".zip")
If IsProjectOpen() Then 'You don't want Visual Studio holding a lock on anything while you're deleting folders
MsgBox("Close projects first, (expletive deleted)", vbOKOnly)
Exit Sub
End If
If MsgBox("Are you sure you want to delete bin and obj folders?", vbOKCancel) = DialogResult.Cancel Then Exit Sub
If ClearBinAndObj(src) Then ZipFile.CreateFromDirectory(src, dest)
End Sub
Public Function ClearBinAndObj(targetDir As String) As Boolean
Dim dirstodelete As New List(Of String)
For Each d As String In My.Computer.FileSystem.GetDirectories(targetDir, FileIO.SearchOption.SearchAllSubDirectories, "bin")
dirstodelete.Add(d)
Next
For Each d As String In My.Computer.FileSystem.GetDirectories(targetDir, FileIO.SearchOption.SearchAllSubDirectories, "obj")
dirstodelete.Add(d)
Next
For Each d In dirstodelete
Try
Directory.Delete(d, True)
Catch ex As Exception
If MsgBox("Error: " & ex.Message & " - OK to continue?", vbOKCancel) = MsgBoxResult.Cancel Then Return False
End Try
Next
Return True
End Function
Public Function IsProjectOpen()
For Each clsProcess As Process In Process.GetProcesses()
If clsProcess.ProcessName.Equals("devenv") Then Return True
Next
Return False
End Function
Une chose à retenir est que les suppressions de système de fichiers peuvent facilement mal tourner. L'un de mes favoris a été lorsque j'ai réalisé que je ne pouvais pas supprimer un dossier car il contenait des éléments créés par Visual Studio lors de l'exécution avec des privilèges élevés (afin que je puisse déboguer un service).
J'avais besoin de donner manuellement l'autorisation ou, je suppose, d'exécuter l'application avec des privilèges élevés également. Quoi qu'il en soit, je pense qu'il y a une certaine valeur à utiliser une approche interactive basée sur l'interface graphique sur un script, d'autant plus que c'est probablement quelque chose qui est fait à la fin d'une longue journée et que vous ne voulez pas savoir plus tard que votre sauvegarde n'existe pas réellement ...