【问题标题】:How can I get a long running PreBuildEvent to output data while its running, instead of after?如何让长时间运行的 PreBuildEvent 在运行时而不是之后输出数据?
【发布时间】:2014-10-14 22:41:32
【问题描述】:

我有一个 Visual Studio MVC 项目,我使用 NPM 和 Bower。我通过预构建命令行恢复我的 NPM 和 Bower 包作为构建过程的一部分,因此使用该项目的人不需要了解 npm install 等。

不幸的是,无论出于何种原因,直到包还原完成后,输出才会呈现到输出窗口。第一次构建项目时,这可能需要很长时间,我不想让我的用户挂起,等待 Visual Studio 响应。

有没有一种方法可以设置我的预构建命令行提示符以写入输出 as 它运行,而不是 after 它运行?

调用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 不支持在任务运行之前显示我想要的输出.有谁知道如何设置它以编写输出作为任务运行?

【问题讨论】:

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


    【解决方案1】:

    使用目标和消息元素:

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

    【讨论】:

    • 这就是我的想法,因为一条消息说“这可能需要一段时间”。我希望我可以将输出流式传输到输出窗口。
    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 2016-03-23
    • 1970-01-01
    • 2017-03-10
    • 2013-11-23
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    相关资源
    最近更新 更多