在发布网站期间更改文件引用

时间:2011-01-25 03:55:34

标签: asp.net-mvc

我有一个主文件,它引用了JS和我的网站使用的CSS文件。这些引用指向文件的非压缩版本。现在,当我通过Visual Studio为我的项目点击Publish按钮时,我想更改主文件中的引用以指向JS和CSS的crunched版本。

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

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

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

感谢。

2 个答案:

答案 0 :(得分: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") %>

答案 1 :(得分:0)

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

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

为一次点击发布自定义publich进程有点棘手。我能回答的最好的是链接到这个博客:http://vishaljoshi.blogspot.com/当我使用一键式发布自定义时,这是我找到最多答案的地方。如果我没记错的话,这不是一件容易的事情,最好将它整合到你的构建过程中,就像我链接的第一个问题中的答案一样。