Skip to content

Commit fcdd471

Browse files
committed
feat: implement versioning service to retrieve application version and cachebuster tokens
1 parent 7ac0306 commit fcdd471

4 files changed

Lines changed: 38 additions & 6 deletions

File tree

Web/Pages/Shared/_Layout.cshtml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
@inject IConfiguration Configuration
2+
@inject Web.Services.IVersionService VersionService
23
<!DOCTYPE html>
34
<html lang="en">
45
<head>
@@ -89,16 +90,14 @@
8990
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@800&display=swap" rel="stylesheet" />
9091
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
9192
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css" />
92-
<link id="prism-theme" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css" />
93-
94-
<!-- Site CSS -->
93+
<link id="prism-theme" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css" /> <!-- Site CSS -->
9594
<environment exclude="Development">
96-
<link rel="stylesheet" href="~/css/bundle.min.css" asp-append-version="true" />
95+
<link rel="stylesheet" href="~/css/bundle.min.css[email protected]()" />
9796
</environment>
9897
<environment include="Development">
9998
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
10099
<link rel="stylesheet" href="~/css/layout.css" asp-append-version="true" />
101-
</environment> <link rel="stylesheet" href="~/Web.styles.css" asp-append-version="true" />
100+
</environment><link rel="stylesheet" href="~/Web.styles.css" asp-append-version="true" />
102101
@await RenderSectionAsync("Styles", required: false)
103102

104103
<!-- Google Analytics - Production Only -->
@@ -192,7 +191,7 @@
192191
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-bash.min.js"></script>
193192
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-yaml.min.js"></script> <!-- Site scripts -->
194193
<environment exclude="Development">
195-
<script src="~/js/bundle.min.js" asp-append-version="true"></script>
194+
<script src="~/js/bundle.min.js[email protected]()"></script>
196195
</environment>
197196
<environment include="Development">
198197
<script src="~/js/site.js" asp-append-version="true"></script>

Web/Program.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@
9494

9595
// Register content service
9696
builder.Services.AddScoped<IContentService, ContentService>();
97+
builder.Services.AddSingleton<IVersionService, VersionService>();
9798

9899
var app = builder.Build();
99100

Web/Services/IVersionService.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace Web.Services;
2+
3+
public interface IVersionService
4+
{
5+
string GetVersion();
6+
}

Web/Services/VersionService.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System.Reflection;
2+
3+
namespace Web.Services;
4+
5+
public class VersionService : IVersionService
6+
{
7+
private readonly string _version;
8+
9+
public VersionService()
10+
{
11+
// Get version from assembly or use build timestamp
12+
var assembly = Assembly.GetExecutingAssembly();
13+
var assemblyVersion = assembly.GetName().Version?.ToString() ?? "1.0.0.0";
14+
15+
// Alternative: Use assembly's last write time as version
16+
var buildDate = File.GetLastWriteTime(assembly.Location);
17+
_version = buildDate.Ticks.ToString();
18+
19+
// You could also use assembly version: _version = assemblyVersion;
20+
}
21+
22+
public string GetVersion()
23+
{
24+
return _version;
25+
}
26+
}

0 commit comments

Comments
 (0)