MSBuild AfterBuild 消息未实时显示

2024-01-03

我在 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 的输出控制台中不会显示命令的任何消息或输出。这并不理想,因为最好“实时”查看消息和命令输出。

在第二个片段中,消息和命令输出都在输出控制台中“实时”显示。

是否可以像第二个片段中的消息一样实时显示第一个片段中的消息?为什么我会遇到这种不一致的情况?


Try use DependsOnTargets代替CallTarget:

<Target Name="AfterBuild" DependsOnTargets="InstallBuildDependencies,BuildAssets">
</Target>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MSBuild AfterBuild 消息未实时显示 的相关文章

随机推荐