2009-08-07 7 views
5

me gustaría explorador se abrió en una carpeta determinada, después del despliegue ha sucedido, y estoy usando lo siguiente para que attemp:Inicio de un programa con el proyecto de implementación de MSBuild/Web y no esperar a que

<Target Name="AfterBuild"> 
    <Exec Command="..."></Exec> 
</Target> 

Sin embargo, un simple "explorer \ somewhere" hace que el proceso de compilación se bloquee en el explorador, y no terminará hasta que cierre el explorador. Prefijo con start explorer \\somewhere tampoco cambia eso.

¿Hay una manera simple de hacer esto? La cosa es que solo nos desplegamos en una etapa intermedia, y queremos que el último paso se realice manualmente, y abrir un explorador en la carpeta relevante es una maravilla. El comando Exec realmente llama a un archivo BAT si eso es importante, utilizando VS.NET 2008, en Server 2008 Standard.

Respuesta

5

Lo que terminé haciendo era tener un

<Exec Command="..." Timeout="2000"></Exec> 

Es decir, lanzar Explorer desde un elemento Exec diferente, entonces la copia elemento, y luego añadir un poco corto de tiempo de espera en este elemento. Esto significa que VS inicia Explorer, y luego de 2 segundos, regresa.

+1

También debe establecer ContinueOnError = "true" si no desea que se produzca un error después del tiempo de espera. –

-1

En el shell de DOS puede usar cmd/c para llamar a otro proceso y no esperar a su devolución. Esto funciona bien como un evento de construcción posterior.

<Target Name="AfterBuild"> 
    <Exec Command="cmd /c start explorer"></Exec> 
</Target> 
+1

Bueno, intentado CMD/C, no hace la diferencia, parece. Disparar cscript y usar "ejecutar" WScript.shell es ir-tan bien. – Svend

+0

¿Se ejecuta o devuelve un error? – MyItchyChin

+0

Lo sentimos, no notamos su respuesta CptSkippy. De todos modos, se ejecuta, pero no regresa. IE, VS está bloqueado por la ventana de Explorer en espera. – Svend

1

Lo que terminé haciendo fue comenzar un proceso de Powershell para los eventos de preconstrucción. Ejecuta el comando sin bloquear el resto del proceso de compilación.

powershell start-process -workingdirectory "..." "cmd " """/k ...""" 
Cuestiones relacionadas