[實作筆記]每次Bulid完專案後自動更新JS或CSS版號避免舊版暫存造成錯誤

  • 972
  • 0
  • 2020-03-11

Auto-versioning in MVC 

每次更新版本都會因為瀏覽器暫存沒有更新以為有BUG

結果常常是虛驚一場,但也浪費不少時間

但如果直接在後面加上時間例如:"xxx.js?v=20200310235959"這樣又幾乎每秒都要重取一次

正片開始

Step1.

首先在專案內找到"AssemblyInfo.cs"

接著將

[assembly: AssemblyVersion("1.0.0.0")]

改成

[assembly: AssemblyVersion("1.0.0.*")]

Step2. 新增下面這個class

public static class AutoVer()
    {
        public static string GetVer()
        {
            var fullVer = Assembly.GetAssembly(typeof(AutoVersion)).GetName().Version.ToString();
            var simpleVer = fullVer.Split('.').ToList().Last();

            return simpleVer;
        }
    }

接著只要在你需要的地方呼叫這段程式就可以取得本次建置的版號

例如

HomeController.cs

public HomeController()
        {
            var autoVer = AutoVersion.GetCurrentVersion();
            ViewBag.autoVer = autoVer;
        }

Index.cshtml

@{
  var autoVer = (string)ViewBag.autoVer;
}
<html>
<head>
  <link rel="stylesheet" href="~/sample.css?v=@(autoVer)" />
  <script src="~/test.js?v=@(autoVer)"></script>
</head>
<body>
    <div>
      HELLO
    </div>
</body>
</html>

完成 

參考資料: https://stackoverflow.com/questions/5818799/autoversioning-css-js-in-asp-net-mvc