2016-02-01 10 views
5

Ogni volta che faccio un accumulo vorrei per questo evento Pre-build che si verifichi:Visual Studio evento pre-build controllare per vedere se esiste una directory (e file) ed eliminarlo se lo fa

del $(ProjectDir)\obj\Debug\Package\PackageTmp\web.config 

Funziona bene se la directory è presente. Ma se la directory non è presente, causerà il fallimento della build. Ho provato a fare qualcosa di simile per verificare se la directory era lì:

if Exists('$(ProjectDir)\obj\Debug\Package\PackageTmp\') 
del $(ProjectDir)\obj\Debug\Package\PackageTmp\web.config 

Ma io credo che la mia sintassi è sbagliato perché ho un codice di uscita di 255. Quale sarebbe il modo corretto per ottenere questo lavoro?

Grazie!

+0

Non è una funzione che accetta parentesi, il suo nome esiste. Usa doppie virgolette. se esiste "percorso" del "percorso" –

+0

Stai parlando all'interno del vero file xml stesso? O la finestra dell'editor nella pagina Proprietà in VS? Ho provato questo oltre una dozzina di modi e non ho avuto fortuna nel farlo funzionare. – ashlar64

+0

Un altro modo: ignora il codice di uscita, ad es. http://stackoverflow.com/questions/7912726/how-to-modify-return-code-in-visual-studio-build-events/7913356#7913356 – stijn

risposta

4

A quanto pare funziona:

if EXIST "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" (
del "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" 
) 

Il pezzo di codice di cui sopra è stato uno dei primi modi Ho provato a fare questo. Ma ha continuato a fallire. Dopo molti altri tentativi ho finito per riavviare Visual Studio 2015 e inserire di nuovo quel codice e poi ha iniziato a funzionare.

2

Vorrei utilizzare un obiettivo per realizzare questo. In particolare, suggerirei di ignorare un target BeforeBuild. Ci sono un paio di modi diversi per farlo, ma il più semplice è quello di modificare il tuo file .vcxproj IMHO.

Nella parte inferiore del file di progetto (è possibile modificarlo facendo clic con il pulsante destro del mouse sul progetto in Visual Studio -> Scarica progetto, quindi fare nuovamente clic con il pulsante destro del mouse e scegliere di modificare il progetto) si dovrebbe vedere una riga <Import .... Aggiungere un bersaglio dopo quella linea che è qualcosa di simile:

<Target Name="BeforeBuild" Condition="Exists('$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config')"> 
    <Delete Files="$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" /> 
</Target> 

Vedi How to: Extend the Visual Studio Build Process per ulteriori informazioni sulla sostituzione Prima e dopo gli obiettivi.

Problemi correlati