asp-append-version =“true”没有将版本附加到javascript文件

时间:2017-11-09 14:02:23

标签: asp.net-core asp.net-core-2.0

asp-append-version =“true”这应该将版本附加到脚本。使用.net核心1.1它运行得很好。最近升级到2.0版,它不再有效。有什么想法吗?

4 个答案:

答案 0 :(得分:2)

https://github.com/MarkPieszak/aspnetcore-angular2-universal/issues/471

基本上你现在需要

@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers"

为了方便起见,您可以在Views文件夹下有一个全局_ViewImports.cshtml文件,只需将该行放入其中,它就会将该行应用于所有View页面。

答案 1 :(得分:1)

在 MVC 中,我们可以通过维护配置值来进行版本控制,然后使用公共类在 JS 和 CSS 引用中附加版本。

CS:

  public static class StaticFileHelper
  {
    static string staticVersion;
    static StaticFileHelper()
    {
     staticVersion = System.Configuration.ConfigurationManager.AppSettings["JSVersioning"];
    }

    public static string StaticFile(this UrlHelper html, string filename)
    {
        var virtualPath =  ReleaseVirtualPath(filename);
        var root = html.RequestContext.HttpContext.Request.ApplicationPath;
        if (root.Length > 1) 
        {
            virtualPath = root + virtualPath;
        }
        return virtualPath;
    }
  }

答案 2 :(得分:0)

在这种情况下,我提出了解决方案

<link rel="stylesheet" type="text/css" href="\css\custom.css?v=@Generator.RandomStringGenerator(9)">

所以我的随机生成器正在为版本生成不同的字符串,所以我再也不会遇到这种情况。我也为有兴趣的人共享随机字符串生成器。

    private static Random random = new Random();
    public static string RandomStringGenerator(int length)
    {
        const string chars = "abcdefghijklmnopqrstuwxyz0123456789";
        return new string(Enumerable.Repeat(chars, length)
          .Select(s => s[random.Next(s.Length)]).ToArray());
    }

答案 3 :(得分:0)

在MVC解决方案中,asp-append-version =“ true”无法将动态关键字附加到JS和CSS文件名。我们可以通过在文件名引用中添加?dt = @(DateTime.Now.Ticks)来实现。

<link href="~/css/AdminLTE.css?dt=@(DateTime.Now.Ticks)" rel="stylesheet" />
<script src="~/js/Common.js?dt=@(DateTime.Now.Ticks)"></script>