18

在我最近在 C#/ASP.NET 中工作的一个项目中,我有一些相当复杂的 JavaScript 文件和一些漂亮的样式表。当然,随着这些脚本资源的大小不断增长,建议缩小资源并使您的网页尽可能轻巧。我知道许多开发人员在调试后将其 JavaScript 资源手动输入压缩器,然后部署他们的应用程序。

当谈到源代码控制和在令人满意的持续集成世界中自动构建时(感谢CruiseControl.NET);手压根本不行。维护源代码控制和提供压缩资源的唯一方法是将 JS/CSS 源代码及其缩小的兄弟保存在单独的目录结构中。然后在代码隐藏中仅注册一组资源或另一组。但是,如果开发人员对 JS/CSS 源代码进行了更改,然后无法重新压缩它并签入两个版本,那么您的代码行现在不同步了。更别提不雅了。

我认为最好为 CC.NET 任务块编写一个自定义可执行文件(如果尚不存在),它将在构建操作之后但在 asp 之前找到并压缩目标目录中的所有 JavaScript 和 CSS 资源.net 发布到目标。这样,开发人员将只使用 JS 和 CSS 源代码,而用户只能获得缩小的资源。

是否有已执行此任务的应用程序,如果没有,我应该在构建服务器上安装哪种资源以执行 CC.NET?

(我在这里能找到的最接近这个问题的问题需要 NAnt,在我的情况下这不是一个选项。)

编辑: Dave Ward 现在在他的网站 上有一篇关于如何在 Visual Studio 中自动缩小的精彩文章。

4

3 回答 3

24

MSBuildCommunityTasks项目有一些 MSBuild 任务可以执行您正在寻找的任务,包括 Merge 和 JSCompress。

您可以将这些添加到 AfterBuild 目标中的 MSBuild 项目中,以允许项目在每次构建项目时执行此操作,并且不会出现任何不同步的情况。然后,您的 Web 应用程序可以引用压缩版本来运行,但开发人员将编辑完整版本。

除了 MSBuild 社区任务程序集之外,服务器上不需要其他任何东西。您可以将此程序集放在您自己的源代码树中并从那里引用,您的 CI 构建应该获得该程序集以及构建时所需的一切。

于 2008-11-10T19:48:37.000 回答
4

另一个用于 MSBuild 的 JS(和 CSS!)压缩库:

http://www.codeplex.com/YUICompressor

这是基于 java 的Yahoo!的 .NET 端口。压缩机

于 2009-01-09T05:33:06.507 回答
1

这不是一个完美的答案,但如果您使用的是 MVC4,他们会将其作为新功能内置。运行 Debug 配置时,它会输出带有注释等的单个文件,但是当您切换到 Release 时,它​​会自动捆绑、缩小和更改对缩小文件的页面引用。您可以为 jquery 和您自己的 js 设置单独的包。这适用于 CSS 和 JS 文件。

http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

如果 MVC4 不适合您,您还可以在 Nuget 上找到可以提供帮助的软件包,例如:

https://www.nuget.org/packages?q=minify

于 2013-04-05T00:32:13.533 回答