我在Visual Studio 2012中的ASP.NET MVC 4项目的.csproj文件中有以下内容:
<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>
在同一个项目的.pubmxl中使用类似的东西:
<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>
问题在于,在第一个代码段中,在构建中的所有内容都完成之前,命令中的任何消息或输出都不会显示在Visual Studio的输出控制台中。这并不理想,因为最好在&#34;实时&#34;中看到消息和命令输出。
在第二个片段中,消息和命令输出都显示在&#34;实时&#34;在输出控制台中。
是否可以将第一个第一个代码段的消息实时显示,就像第二个代码段中的消息一样?为什么我会遇到这种不一致的情况?
答案 0 :(得分:1)
超级迟到的答案,但最近因同样的问题而跌跌撞撞。 根据备注部分中的Exec Task documentation,似乎无法做到这一点:
但是,与更具体的任务不同,Exec任务无法从其运行的工具或命令中收集输出。
希望这为其他人节省一些时间。
答案 1 :(得分:0)
尝试使用DependsOnTargets
代替CallTarget
:
<Target Name="AfterBuild" DependsOnTargets="InstallBuildDependencies,BuildAssets">
</Target>