Questa domanda è stata posta qualche tempo fa, ma riguarda lo stesso tipo di problema che stavo avendo.
Il problema:
- Vogliamo controllare il nostro codice.
- Quindi vogliamo costruire il nostro progetto.
- Durante la nostra compilazione dipendiamo dagli eventi di compilazione per spostare i file in modo da disporre dei file appropriati per il completamento del processo di compilazione.
- Quando il nostro evento Build tenta di copiare i file, otteniamo errori di accesso negato.
La ragione:
- Il plug-in di Team Foundation Server per Visual Studio modifica l'attributo di sola lettura sui nostri file in READONLY TRUE quando controlliamo i nostri file.
Esempio di evento di creazione:
- copia "$ (TargetDir) SomeFile.ext" "$ (ProjectDir)"
Sopra, dobbiamo semplicemente spostare un file dal nostro percorso di build di destinazione (le cartelle bin \ debug o bin \ release) alla nostra cartella di progetto. Nella mia situazione, era così che potevo includere i file compilati del progetto nel mio programma di installazione. Il mio programma di installazione non li stava prendendo come parte dell'output del progetto.
The Fix: (mi sono quasi preso a calci in faccia quando l'ho capito)
Evento di nuova costruzione:
- attrib -R "$ (ProjectDir) SomeFile.ext"
- copia "$ (TargetDir) SomeFile.ext" "$ (ProjectDir)"
- attrib + R "$ (ProjectDir) SomeFile.ext"
Ci stiamo divertendo tutti con Build Events, giusto? Sopra faccio semplicemente 2 cose, rimuovo l'attributo di sola lettura, ora i file non sono di sola lettura. Copia il mio file come originariamente volevo. Quindi sostituire l'attributo di sola lettura (opzionale, immagino) per mantenere felici Visual Studio e Team Foundations.
E sì ... mi sto ancora prendendo a calci in faccia su questo.