如何让长时间运行的PreBuildEvent在运行时输出数据,而不是之后?

时间:2014-10-14 22:41:33

标签: asp.net-mvc msbuild npm bower gulp

我有一个视觉工作室MVC项目,我使用NPM和Bower。我通过预构建命令行将我的NPM和Bower包恢复为构建过程的一部分,因此使用该项目的人不需要知道npm install等。

不幸的是,无论出于何种原因,在包恢复完成之前,输出都不会呈现到输出窗口。在第一次构建项目时,这可能需要很长时间,我不想让我的用户挂起,等待视觉工作室做出响应。

有没有办法可以设置我的预构建命令行提示符,以便在运行时将写入输出,而不是运行后

>

csproj调用运行命令

 <PropertyGroup>
    <PreBuildEvent>
        cd "$(ProjectDir)"
        echo "generating output for the output window prior to running the long running process"
        dir            
        echo "now running long running task"
        call pre-build.bat $(ConfigurationName)
    </PreBuildEvent>
  </PropertyGroup>

正如你所看到的,我有一些调试输出,有几个调用“echo”和一个dir调用。我希望在长时间运行的任务之前看到这些命令输出到输出窗口,但这不会发生。相反,我只看到以下输出,直到包恢复运行之后

1>------ Build started: Project: MyProject, Configuration: Debug Any CPU ------

因为我没有看到echo和dir的输出,我认为有不同的方式来运行这个任务,或者VS / MsBuild只是不支持显示我想要的输出,直到任务运行。有没有人知道如何设置它来将输出写为任务运行?

1 个答案:

答案 0 :(得分:0)

使用Target&amp;消息元素:

<Target Name="UserMessage" BeforeTargets="Build">
    <Message Text="Your message here" />
</Target>