2016-06-30 6 views
0

Ich habe so etwas wie die folgend in der CSPROJ-Datei für ein ASP.NET MVC 4-Projekt in Visual Studio 2012:MSBuild Afterbuild Nachrichten zeigen, die nicht in Echtzeit

<Target Name="AfterBuild"> 
    <CallTarget Targets="InstallBuildDependencies" /> 
    <CallTarget Targets="BuildAssets" /> 
</Target> 
<Target Name="InstallBuildDependencies"> 
    <Message Text="Installing build dependencies:" Importance="high" /> 
    <Exec Command="npm install" /> 
</Target> 
    <Target Name="BuildAssets"> 
    <Message Text="Building assets:" Importance="high" /> 
    <Exec Command="grunt build" /> 
</Target> 

und so etwas wie dies in einem .pubmxl für das gleiche Projekt:

<PropertyGroup> 
    <!-- Other properties here --> 
    <InstallBuildDependenciesCmd>npm install</InstallBuildDependenciesCmd> 
    <BuildDistAssetsCmd>grunt dist</BuildDistAssetsCmd> 
    <PipelineDependsOn> 
     InstallBuildDependencies; 
     BuildDistAssets; 
    </PipelineDependsOn> 
    </PropertyGroup> 
    <Target Name="InstallBuildDependencies"> 
    <Message Text="Installing build dependencies:" Importance="high" /> 
    <Exec Command="$(InstallBuildDependenciesCmd)" /> 
    </Target> 
    <Target Name="BuildDistAssets" AfterTargets="InstallBuildDependencies"> 
    <Message Text="Building distribution assets:" Importance="high" /> 
    <Exec Command="$(BuildDistAssetsCmd)" /> 
    </Target> 

Das Problem ist, dass in dem ersten Schnipsel, keine der Nachrichten oder die Befehlsausgabe wird in der Ouput-Konsole in Visual Studio, bis alles in der Build abgeschlossen ist. Dies ist nicht ideal, da es besser wäre, die Nachrichten und die Befehlsausgabe in "Echtzeit" zu sehen.

Im zweiten Snippet werden sowohl die Nachrichten als auch die Befehlsausgabe DO in "Echtzeit" in der Ausgabekonsole angezeigt.

Ist es möglich, die Nachrichten aus dem ersten ersten Snippet in Echtzeit anzuzeigen, wie die Nachrichten im zweiten Snippet? Warum habe ich diese Inkonsistenz?

+0

keine Erfahrung mit mvc, aber * AfterBuild * wahrscheinlich passiert, nachdem alles (?) Sonst ist Build, also macht es keinen Sinn, Sie sehen nur die Nachrichten nur am Ende des Builds? Während Sie mit dem zweiten Snippet Ihre Zielabhängigkeiten von etwas im Build zu machen scheinen, würden sie also früher als die AfterBuild-Snippets aufgerufen werden, so dass sie früher in der Ausgabe angezeigt werden. – stijn

Antwort

0

Ausprobieren Verwenden DependsOnTargets statt CallTarget:

<Target Name="AfterBuild" DependsOnTargets="InstallBuildDependencies,BuildAssets"> 
</Target> 
0

Super-späte Antwort, aber stolperte vor kurzem mit dem gleichen Problem. Es scheint, dass dies nicht möglich ist, nach den Exec Task documentation im Bemerkungen Abschnitt:

jedoch die Exec Aufgabe, im Gegensatz zu einer spezifischeren Aufgabe kann nicht ausgegeben von dem Werkzeug sammeln oder dem Befehl, dass es läuft.

Hoffen, das spart etwas Zeit für andere.

Verwandte Themen