2009-08-07 2 views
5

I-Explorer auf einem bestimmten Ordner geöffnet möchten, nachdem der Einsatz geschehen ist, und ich bin mit dem folgende es attemp:ein Programm mit MSBuild/Web Deployment Project starten und wartet nicht auf sie

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

Ein einfacher "explorer \ somewhere" bewirkt jedoch, dass der Buildprozess im Explorer blockiert wird, und er endet erst, wenn Sie den Explorer schließen. Das Präfixieren mit start explorer \\somewhere ändert das auch nicht.

Gibt es eine einfache Möglichkeit, dies zu tun? Tatsache ist, dass wir nur eine Zwischenstufe bereitstellen und möchten, dass der letzte Schritt manuell ausgeführt wird, und das Öffnen eines Explorers für den relevanten Ordner ist ein Feingefühl. Der Exec-Befehl ruft tatsächlich eine BAT-Datei auf, wenn dies unter Verwendung von VS.NET 2008 auf Server 2008 Standard von Bedeutung ist.

Antwort

5

Was ich war ein Die

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

haben am Ende tun ist, starten Sie Explorer aus einem anderen Exec Elemente dann dem Kopie-Elemente, und dann ein etwas kurzes Timeout für dieses Element hinzuzufügen. Das bedeutet, dass VS den Explorer startet und nach 2 Sekunden zurückkehrt.

+1

Sie sollten auch ContinueOnError = "true" setzen, wenn nach dem Timeout kein Fehler angezeigt werden soll. –

-1

In der DOS-Shell können Sie mit cmd/c einen anderen Prozess aufrufen und nicht auf die Rückgabe warten. Das funktioniert gut als Post-Build-Event.

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

Nun, versuchte CMD/C, macht keinen Unterschied scheint es. Cscript zu starten und den "run" von WScript.shell zu verwenden, ist ebenfalls nicht möglich. – Svend

+0

Wird ein Fehler ausgeführt oder zurückgegeben? – MyItchyChin

+0

Entschuldigung, habe deine Antwort nicht bemerkt CptSkippy. Wie auch immer, es läuft, kehrt aber nicht zurück. IE, VS wird vom wartenden Explorer-Fenster blockiert. – Svend

1

Was ich getan habe, war einen Powershell-Prozess zu den Pre-Build-Events zu starten. Es führt den Befehl aus, ohne den Rest des Buildprozesses zu blockieren.

powershell start-process -workingdirectory "..." "cmd " """/k ...""" 
Verwandte Themen