【发布时间】:2016-09-18 10:53:16
【问题描述】:
我正在开发一个 ASP.NET 4.5 Web 项目(不是 ASP.NET Core/5),并致力于采用 NPM、Gulp、Bower 等方式在职的。不过,我遇到的问题是这些新工具与 VSTS(TFS Online)和 Azure 构建 + 部署的交集。
这是我得到的:
- 一个 ASP.NET 4.5 Web 项目,包括 NPM(用于 Gulp 等开发依赖项)、Bower(用于 Angular 等客户端库依赖项)和 Gulp(用于 JS 缩小等 Web 构建内容)。
- 一个 VSTS 构建任务(不是旧的 XAML 类型),使用 NPM task、Gulp task 和 Azure Web App Deployment task。
我面临的挑战是,并非 NPM、Bower 和 Gulp 任务的所有结果都对 Azure Web 应用部署任务产生影响。我预计这是因为由 build task 创建并由 Azure Web 应用部署任务使用的 Web 部署包没有考虑到 NPM、Bower 和 Gulp 所做的所有更改。
例如,Bower 依赖项将被带到 bower_components 文件夹,我将在 Gulp 任务中使用 bower-installer 将这些文件的子集复制到 lib 文件夹。但由于 lib 文件夹(以及其中的文件)未包含在 Visual Studio 项目文件中,因此构建步骤不会将它们添加到部署包中。
我可以想出几种方法来解决这个问题,但我对其中任何一种都不是特别兴奋。他们中的大多数人感觉像是“逆流而上”或有其他缺点,这让我想知道我是否错过了一些东西。选项:
- 在 Visual Studio 项目中“包含”输出 NPM、Bower 和 Gulp。例如。包括
bower_components和lib文件夹。不过,我觉得这消除了包管理的很多好处,因为我将有明确的包含。我也不喜欢在项目中包含有效构建的输出(例如 Gulp 任务结果),它旨在表示源。 - 跳过障碍,让 Web 部署包选择性地包含额外文件,如 here 所述。这绝对感觉就像在上游游泳。由于不同的原因,我在过去的项目中也走这条路,这不是在公园里散步。
- 使用其他一些部署技术。 This answer 谈论使用自定义 Kudu 部署脚本。但这似乎比我预期的要定制一些。在我的 Web 应用程序 Kudu 页面上单击“下载部署脚本”时,我也立即遇到了障碍,并出现错误“仅在不使用自定义部署脚本时才支持操作”。
是否有我没有看到的优雅替代方案?我是否只需要硬着头皮选择我上面列出的选项之一?
顺便提一下,使用 ASP.NET Core/5 是否会带来更流畅的体验?因为考虑到对 NPM、Grunt、Gulp、Bower 等的推动,我很惊讶它至少在 ASP.NET 4.5 中被证明是多么尴尬。
【问题讨论】:
-
所以,不幸的是,这似乎是一个“已知”问题,但没有采取任何措施,最好的答案是打开 *proj 文件并开始修补。 github.com/Microsoft/vsts-tasks/issues/468
标签: visual-studio-2015 gulp bower azure-devops azure-deployment