2012-02-15 10 views
5

Quindi voglio trovare tutti i file .xml e .pdb ed eliminarli da una cartella di output di compilazione. Posso fare questo uno alla volta, ma posso farlo come uno trova i file corrispondenti.TFS Trova file corrispondenti con OR

+1

Stai chiedendo di farlo all'interno di uno script MSBuild? –

risposta

20

Se si esegue questa operazione come parte del modello di processo di creazione TFS, sono necessarie alcune attività e una variabile. Farò del mio meglio per parlarti di ciò.

  1. Creare una sequenza da qualche parte dopo la costruzione è stata completata - Ho messo la mia poco dopo in cui i file sono stati copiati nella Località di riconsegna.
  2. Creare una variabile con scope alla Sequenza chiamato matchedFiles di tipo IEnumerable<String>
  3. Aggiungi un FindMatchingFiles attività alla sequenza e impostare le proprietà come segue
    • MatchPattern: String.Format("{0}\**\*.xml;{0}\**\*.pdb", BuildDetail.DropLocation). È possibile modificarlo per utilizzare BinariesDirectory se non si pulisce la cartella di rilascio.
    • Risultato: matchedFiles
  4. Aggiungi un ForEach attività alla sequenza e impostare le proprietà come segue:
    • Tipo: String.
    • Foreach file in matchedFiles
    • Nel corpo aggiungere un nuovo InvokeMethod l'attività e impostare le proprietà come segue:
      • TargetType: System.IO.File
      • MethodName: Delete
      • Parametro: Direzione: In Tipo: String Valore: file

Ora, per evitare di avere un qualsiasi file Eliminare nel vostro log di compilazione, aprire il processo Template XAML con Visual Studio, trovare il passo InvokeMethod, e aggiungi il seguente Attributo a XAML:

mtbwt:BuildTrackingParticipant.Importance="None" 
+2

+1 per mtbwt: BuildTrackingParticipant.Importance = "Nessuno" suggerimento. Grazie. – pantelif

+1

@DaveShaw, una grande risposta. Se potessi revocarlo 100 volte lo farei. Grazie! – Matt

+0

Vorrei averlo trovato questo 6 mesi fa. Grazie, DaveShaw! – efisher