【发布时间】:2015-11-07 09:02:45
【问题描述】:
我正在尝试从将 Visual Studio Online 中的 Web 项目部署到 Azure 网站的过程中排除某些文件/文件夹。
Web 项目有一个 Content 文件夹,其中包含 CSS、JS、构建脚本等,这些只是开发所必需的,一旦部署到 Azure,CSS 和 JS 就会从 CDN 加载。目前,VSO 的构建将所有这些文件复制到 Azure 中的 webroot,这是不必要的,并且在构建脚本的情况下存在潜在的安全问题。
现在我知道可以通过将文件的构建操作设置为None 来避免这种情况,但这是一个非常繁琐的解决方案,因为正在进行大量开发,新文件一直在添加,而且很容易忘记此设置。
首先我尝试在构建定义源设置中将Content 文件夹设置为Cloaked,但这只会导致VSO 在构建时不下载此文件夹,msbuild 仍会抱怨这些文件丢失。
有没有办法告诉 msbuild 忽略整个 Content 文件夹?我已经尝试在构建定义中添加 /p:ExcludeFoldersFromDeployment="Content" 作为 msbuild 参数,并且还尝试了此处 How to get Visual Studio 'Publish' functionality to include files from post build event? 中的解决方案,但没有任何效果。
【问题讨论】:
-
为什么不部署它呢?
-
您是否考虑过继续部署这些资产并设置备用系统,以防您的 CDN 端点不可用。阅读这篇文章 hanselman.com/blog/… 以了解我的意思。
-
@LukkhaCoder 好吧,正如我所说,在 Web 服务器上包含其中一些文件是一个潜在的安全问题。此外,复制所有这些不必要的东西会导致构建时间更长,这最终会花费我们 VSO 构建时间。
-
@cory-fowler 谢谢,是的,我们已经有第二个 CDN 作为后备。对于生产,我们还捆绑并缩小了所有 CSS 和 JS,因此我们不希望原始文件与所有开发 cmets 一起存在。
标签: msbuild azure-web-app-service azure-devops