2012-05-02 6 views
13

Così ho un comando che ho voglia di correre, che è simile alla seguente:Per comando utilizzando devenv.exe corre troppo in fretta

for /r %n in ("*.vdproj") do "C:/Program Files/Microsoft 
Visual Studio 10.0/Common7/IDE/devenv.exe" %n /build "BuildServer" 

Sembra funzionare, cioè si svolge devenv su ogni file .vdproj; tuttavia, sembra eseguirli in parallelo e tornare immediatamente. Questo è un problema; Devo aspettare che siano tutti terminati prima che venga eseguito il prossimo passo nel file .bat. Come posso neanche

1- Ottienilo a 'aspettare' su ogni devenv di finire prima di eseguire il successivo

o

2- Aspettare che Devenv.exe è tutto fatto prima di passare in seguito?

+0

(non vuoi% n%, o è anche %% n %%?) Altro 2 cose. Sei sicuro che devenv.exe stia effettivamente facendo qualcosa OPPURE sta fallendo immediatamente, dando l'impressione che stia eseguendo il tuo elenco in parallelo? Ad esempio, hai provato ad eseguire una sola iterazione del ciclo for (senza il forloop) dalla riga di comando, riempiendo i valori di file/dir noti, esistenti per il tuo% n? 2. utilizzare la scheda dei processi sul task manager, ordinato per nome del processo, per vedere se si vede un pasticcio di devenv.exe in esecuzione sul proprio sistema. Ciò proverebbe che la mia domanda n. 1 non è pertinente. In bocca al lupo. – shellter

+0

Se guardo il task manager, vedo un'intera serie di Devenv.exe in esecuzione, e sembrano correre fino al completamento e fermarsi alla fine. – GWLlosa

risposta

1

Richiamare devenv.exe utilizzando start, ad es.

start /wait "" "C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/devenv.exe" %n /build "BuildServer" 

Utilizzare start /? per l'utilizzo.

+0

L'ho provato, ma è comunque tornato immediatamente ... non sono sicuro se è perché devenv fa il proprio thread di avvio su file separati e restituisce il gioco o qualcosa del genere, ma start/wait/B non ha funzionato affatto. – GWLlosa

+0

Interessante. Un'altra soluzione, in cima alla mia testa, è di bypassare devenv e invocare direttamente msbuild. – Sorpigal

+0

Sfortunatamente, questa è la soluzione alternativa a msbuild ... MSBuild.exe non può gestire direttamente i progetti .vdproj (programma di installazione/fusione). – GWLlosa

33

Il trucco è utilizzare devenv.com anziché devenv.exe. devenv.com restituirà l'output alla console e otterrà esattamente il risultato desiderato.

+0

Cosa succede se si tratta di una macchina a 64 bit? – dbenham

+0

Quindi è probabilmente Program Files (x86). – GWLlosa

+0

Mi riferivo al fatto che Windows a 64 bit non esegue file .com. – dbenham

Problemi correlati