2012-05-02 6 views
13

así que tengo un comando que desee ejecutar, que tiene el siguiente aspecto:comandos utilizando devenv.exe corre demasiado rápido

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

Parece que funciona en el que se ejecute en cada archivo devenv .vdproj; sin embargo, parece ejecutarlos en paralelo e inmediatamente regresar. Esto es un problema; Necesito esperar hasta que hayan terminado antes de que se ejecute el siguiente paso en el archivo .bat. ¿Cómo puedo ya sea

1- Obtener para 'esperar' en cada devenv para terminar antes de ejecutar el siguiente

o

2- Esperar hasta devenv.exe es todo hecho antes de pasar después?

+0

(¿No quieres% n%, o es incluso %% %% n?) Else 2 cosas. ¿Estás seguro de que devenv.exe realmente está haciendo algo O está fallando inmediatamente, dándote la impresión de que ejecuta tu lista en paralelo? Es decir, ¿trataste de ejecutar solo una iteración del bucle for (sin forloop) desde la línea de comandos, rellenando los valores conocidos de dir/file para tu% n? 2. utilice la pestaña de procesos en el administrador de tareas, ordenada por nombre de proceso, para ver si ve un desorden de devenv.exe ejecutándose en su sistema. Eso probaría que mi pregunta n. ° 1 no es relevante. Buena suerte. – shellter

+0

Si miro al administrador de tareas, veo que se está ejecutando una gran cantidad de Devenv.exe, y parece que se ejecutan hasta completarse y finalmente se detienen. – GWLlosa

Respuesta

1

Invoke devenv.exe usando start, por ejemplo

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

Uso start /? para su uso.

+0

lo he intentado, pero todavía respondidos de inmediato ... No estoy seguro si es porque devenv hace su propio lanzamiento en caso de hilo y separada del juego o algo regresar, pero espera/inicio/B no funcionaba en absoluto. – GWLlosa

+0

Interesante. Otra solución, fuera de mi cabeza, es eludir devenv e invocar msbuild directamente en su lugar. – Sorpigal

+0

Desafortunadamente, esta ES la solución para msbuild ... MSBuild.exe no puede manejar directamente proyectos de .vdproj (instalador/módulo de fusión). – GWLlosa

33

El truco es utilizar devenv.com en lugar de devenv.exe. devenv.com devolverá la salida a la consola y obtendrá exactamente el resultado deseado.

+0

¿Qué pasa si se trata de una máquina de 64 bits? – dbenham

+0

Entonces es probable que sea Archivos de programa (x86). – GWLlosa

+0

Me refería al hecho de que Windows de 64 bits no ejecuta archivos .com. – dbenham

Cuestiones relacionadas