diff --git a/Directory.Packages.props b/Directory.Packages.props
index 4a9060035..ed9d3acb4 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -2,6 +2,7 @@
true
+ true
@@ -42,7 +43,7 @@
-
+
@@ -70,4 +71,4 @@
-
+
\ No newline at end of file
diff --git a/build/Targets.fs b/build/Targets.fs
index 49ad43ede..efc5f7852 100644
--- a/build/Targets.fs
+++ b/build/Targets.fs
@@ -34,7 +34,7 @@ let private version _ =
let private format _ = exec { run "dotnet" "format" "--verbosity" "quiet" }
-let private watch _ = exec { run "dotnet" "watch" "--project" "src/tooling/docs-builder" "--no-hot-reload" "--" "serve" }
+let private watch _ = exec { run "dotnet" "watch" "--project" "src/tooling/docs-builder" "--configuration" "debug" "--" "serve" }
let private lint _ =
match exec {
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 44c6f4409..df20443f0 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -9,5 +9,6 @@
true
+ true
-
\ No newline at end of file
+
diff --git a/src/Elastic.Documentation.Site/Elastic.Documentation.Site.csproj b/src/Elastic.Documentation.Site/Elastic.Documentation.Site.csproj
index c8222af4c..c8b68628d 100644
--- a/src/Elastic.Documentation.Site/Elastic.Documentation.Site.csproj
+++ b/src/Elastic.Documentation.Site/Elastic.Documentation.Site.csproj
@@ -10,7 +10,6 @@
true
$(InterceptorsPreviewNamespaces);Microsoft.AspNetCore.Http.Generated
true
- true
diff --git a/src/tooling/docs-builder/Http/ReloadGeneratorService.cs b/src/tooling/docs-builder/Http/ReloadGeneratorService.cs
index 30a0af437..fdc34e2e8 100644
--- a/src/tooling/docs-builder/Http/ReloadGeneratorService.cs
+++ b/src/tooling/docs-builder/Http/ReloadGeneratorService.cs
@@ -6,8 +6,24 @@
using Microsoft.Extensions.Logging;
using Westwind.AspNetCore.LiveReload;
+[assembly: System.Reflection.Metadata.MetadataUpdateHandler(typeof(Documentation.Builder.Http.HotReloadManager))]
+
namespace Documentation.Builder.Http;
+public static class HotReloadManager
+{
+ public static void ClearCache(Type[]? _) => LiveReloadMiddleware.RefreshWebSocketRequest();
+
+ public static void UpdateApplication(Type[]? _) => Task.Run(async () =>
+ {
+ await Task.Delay(1000);
+ var __ = LiveReloadMiddleware.RefreshWebSocketRequest();
+ Console.WriteLine("UpdateApplication");
+ });
+
+}
+
+
public sealed class ReloadGeneratorService(ReloadableGeneratorState reloadableGenerator, ILogger logger) : IHostedService, IDisposable
{
private FileSystemWatcher? _watcher;
@@ -22,6 +38,9 @@ public async Task StartAsync(Cancel cancellationToken)
await ReloadableGenerator.ReloadAsync(cancellationToken);
var directory = ReloadableGenerator.Generator.DocumentationSet.SourceDirectory.FullName;
+#if DEBUG
+ directory = ReloadableGenerator.Generator.Context.DocumentationCheckoutDirectory?.FullName ?? throw new InvalidOperationException("No checkout directory");
+#endif
Logger.LogInformation("Start file watch on: {Directory}", directory);
var watcher = new FileSystemWatcher(directory)
{
@@ -40,6 +59,9 @@ public async Task StartAsync(Cancel cancellationToken)
watcher.Renamed += OnRenamed;
watcher.Error += OnError;
+#if DEBUG
+ watcher.Filters.Add("*.cshtml");
+#endif
watcher.Filters.Add("*.md");
watcher.Filters.Add("docset.yml");
watcher.IncludeSubdirectories = true;
@@ -73,6 +95,10 @@ private void OnChanged(object sender, FileSystemEventArgs e)
Reload();
if (e.FullPath.EndsWith(".md"))
Reload();
+#if DEBUG
+ if (e.FullPath.EndsWith(".cshtml"))
+ _ = LiveReloadMiddleware.RefreshWebSocketRequest();
+#endif
}
@@ -97,6 +123,10 @@ private void OnRenamed(object sender, RenamedEventArgs e)
Logger.LogInformation(" New: {NewFullPath}", e.FullPath);
if (e.FullPath.EndsWith(".md"))
Reload();
+#if DEBUG
+ if (e.FullPath.EndsWith(".cshtml"))
+ _ = LiveReloadMiddleware.RefreshWebSocketRequest();
+#endif
}
private void OnError(object sender, ErrorEventArgs e) =>