仅在发布 ASP.NET 5 个 Web 应用程序时执行 Gulp 个任务

Executing Gulp task(s) only when publishing ASP.NET 5 web application

仅在发布 ASP.NET 5 网络应用程序时执行 Gulp 任务的最佳方式是什么?我是否需要 add a custom build event 来执行 Gulp 命令?

cmd.exe /c gulp -b "C:\Projects\ProjectName\Source\ProjectName.Web" --gulpfile "C:\Projects\ProjectName\Source\ProjectName.Web\Gulpfile.js" publish

或者,最好有一种方法可以通过 Task Runner Explorer 将 Gulp 任务绑定到 BeforePublish 目标?

如有任何建议,我们将不胜感激。

在您的发布配置文件中创建目标(*.pubxml 文件仍然存在于 asp.net 5 个项目中)。 pubxml 文件是一个构建文件,它被添加到您的项目构建文件中。这样,当您使用该特定配置文件发布时,它只会是 运行。
我会使用 BeforeBuild 目标更通用(所有包恢复,所有 js/css 在视图中的注入等我会在构建开始之前完成它们)并在那里添加 gulp 命令:

<Target Name="BeforeBuild">
   <Exec Command="call gulp" WorkingDirectory="$(ProjectDir)" />
</Target>

无论您是从 Visual Studio 发布还是从构建机器使用 MSBuild 发布,这都有效。

更新 2 .NET Core CLI 不再支持 "prepack"。 "postcompile" 脚本可能效果更好。

https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json#scripts

原答案

将其添加到 project.json

的 "scripts" 部分

project.json: Scripts documentation

{
...
  "scripts": {
    "prepack": "gulp publish",
  }
...
}