gpt4 book ai didi

asp.net-mvc - 在 ASP.NET MVC 中自动转换 CSS/JS?

转载 作者:行者123 更新时间:2023-12-03 21:08:35 24 4
gpt4 key购买 nike

所以我在看 this stackoverflow post关于 ASP.NET MVC 中 CSS/JS 文件的“自动版本化”,并想知道什么是“最佳”策略来做到这一点。

提供的解决方案会插入一个程序集编号 - 这意味着每次发布时 - 它都会更改每个文件,这并不理想,因为如果您仅对 1 *.css 或 *.js 进行修改,那么它将更改每个文件。

1)如何仅针对“单个文件”而不是使用修改日期或 IIS7 上的其他内容使用站点范围的程序集?

2)此外,如果我有某种“静态” Assets ,例如 - http://static.domain.com/js/123.js - 如果有人将此静态链接集成到他们的网站上,我如何使用重写来发送请求的最新文件?

http://static.domain.com/js/123.js是链接,当有请求时 - 检查并发送最新文件?

最佳答案

ASP.NET 4.5+ 带有 built-in bundling & minification framework
这是为了解决这个问题而设计的。

如果你绝对需要一个简单的自己动手的解决方案,你可以使用下面的答案,但我总是说正确的方法是使用捆绑和缩小框架。

您可以修改 AssemblyInfo.cs 文件像这样:

Change
[assembly: AssemblyVersion("1.0.0.0")]
to
[assembly: AssemblyVersion("1.0.*")]
这意味着每次构建项目时,都会有一个新的程序集版本,该版本高于前一个版本。现在您有了唯一的版本号。
创建一个 UrlHelperExtension 类,该类将在 View 中需要时帮助获取此信息:
public static class UrlHelperExtensions
{
public static string ContentVersioned(this UrlHelper self, string contentPath)
{
string versionedContentPath = contentPath + "?v=" + Assembly.GetAssembly(typeof(UrlHelperExtensions)).GetName().Version.ToString();
return self.Content(versionedContentPath);
}
}
您现在可以通过以下方式轻松地将版本号添加到您的 View 中:
<link href="@Url.ContentVersioned("style.css")" rel="stylesheet" type="text/css" />
查看页面源代码时,您现在将看到如下所示的内容
<link href="style.css?v=1.0.4809.30029" rel="stylesheet" type="text/css" />

关于asp.net-mvc - 在 ASP.NET MVC 中自动转换 CSS/JS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5818799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com