【问题标题】:Changing file references during the Publishing of the website在网站发布期间更改文件引用
【发布时间】:2011-06-14 23:01:20
【问题描述】:

我有一个主文件,其中引用了用于我的网站的 JS 和 CSS 文件。这些引用指向文件的非压缩版本。现在,当我通过 Visual Studio 为我的项目点击“发布”按钮时,我想将主文件中的引用更改为指向 JS 和 CSS 的压缩版本。

例如:在开发过程中如果它指向http://www.example.com/main.js,在发布过程中它应该将引用更改为http://www.example.com/main_min.js。有没有办法做到这一点?

另外,在更改引用之前,我需要通过输出压缩后的 js 文件(main_min.js)的工具运行我当前的 js 文件(main.js)。

对此的任何帮助表示赞赏!

谢谢。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    您可以转到项目的属性并在“构建事件”选项卡中将以下内容输入到“构建后事件命令行”中:

    $(SolutionDir)..\YourJsCruncher.exe $(ProjectDir)\content\js\debug\ $(ProjectDir)\content\js\release\
    

    然后有一个自定义的 HTML 助手:

    public static MvcHtmlString IncludeJs(this UrlHelper helper, string javascriptFile)
    {
    #if DEBUG
        var subfolder = "debug";
    #else
        var subfolder = "release";
    #endif
        var path = helper.Content("~/Content/js/{1}/{2}.js", subfolder, javascriptFile);
        return MvcHtmlString.Create(string.Format("<script type=\"text/javascript\" src=\"{0}\"></script>", path));
    }
    

    然后在你看来:

    <%= Url.IncludeJs("foo.js") %>
    

    【讨论】:

      【解决方案2】:

      这个问题有你需要的大部分答案:

      Concatenate and minify JavaScript on the fly OR at build time - ASP.NET MVC

      自定义一键发布的公开流程有点棘手。我能回答的最好的答案是链接到这个博客:http://vishaljoshi.blogspot.com/ 当我使用一键发布自定义时,这是我找到最多答案的地方。如果我没记错的话,这不是微不足道的,最好将其集成到您的构建过程中,就像我链接解释的第一个问题中的答案一样。

      【讨论】:

      • 感谢 jfar,第一个链接谈到了缩小 js 文件,但我找不到任何答案/示例来在发布过程中写一些东西来更改另一个链接中母版页中的引用。
      猜你喜欢
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多