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

Posted

技术标签:

【中文标题】仅在发布 ASP.NET 5 Web 应用程序时执行 Gulp 任务【英文标题】:Executing Gulp task(s) only when publishing ASP.NET 5 web application 【发布时间】:2015-08-07 17:34:17 【问题描述】:

的最佳方式是什么?我需要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 目标?

任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

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

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

无论您是从 Visual Studio 发布还是从您的构建机器使用 MSBuild 发布,这都会起作用。

【讨论】:

【参考方案2】:

更新 2 .NET Core CLI 不再支持“预打包”。 “后编译”脚本可能会更好。

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

原答案

将其添加到project.json 的“脚本”部分

project.json: Scripts documentation


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

【讨论】:

如果我希望它在发布之前运行,我会挂钩到prepack 操作吗? 其实如果你使用VS工具发布,“prebuild”目标可能会更好。 如果您想在发布之前运行,那么我认为prepublish 是要使用的操作...

以上是关于仅在发布 ASP.NET 5 Web 应用程序时执行 Gulp 任务的主要内容,如果未能解决你的问题,请参考以下文章

400 仅在启用 cors 时响应 asp.net web api POST 请求

ASP.NET WebService 仅在使用 Http Get 但 web.config 设置正确时错误地返回 XML 而不是 JSON

ASP.NET MVC Web API 身份验证令牌安全问题

如何使用 ajax 从跨域调用 asp.net Web 服务

Azure Web App 中的 ASP.NET 5 环境名称

在 Windows 7 上带有 websockets 的 asp.net 5 Web 应用程序