diff --git a/src/Microsoft.AspNetCore.Mvc.Razor/Internal/DefaultRazorProject.cs b/src/Microsoft.AspNetCore.Mvc.Razor/Internal/DefaultRazorProject.cs index dd49bdfb95..c814102ba7 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor/Internal/DefaultRazorProject.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor/Internal/DefaultRazorProject.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.IO; using Microsoft.AspNetCore.Razor.Evolution; using Microsoft.Extensions.FileProviders; +using Microsoft.Extensions.Primitives; namespace Microsoft.AspNetCore.Mvc.Razor.Internal { @@ -41,6 +42,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal return EnumerateFiles(_provider.GetDirectoryContents(path), path, ""); } + public virtual IChangeToken Watch(string pattern) => _provider.Watch(pattern); + private IEnumerable EnumerateFiles(IDirectoryContents directory, string basePath, string prefix) { if (directory.Exists) diff --git a/src/Microsoft.AspNetCore.Mvc.RazorPages/DependencyInjection/MvcRazorPagesMvcCoreBuilderExtensions.cs b/src/Microsoft.AspNetCore.Mvc.RazorPages/DependencyInjection/MvcRazorPagesMvcCoreBuilderExtensions.cs index 826f154af7..cd8e3de42f 100644 --- a/src/Microsoft.AspNetCore.Mvc.RazorPages/DependencyInjection/MvcRazorPagesMvcCoreBuilderExtensions.cs +++ b/src/Microsoft.AspNetCore.Mvc.RazorPages/DependencyInjection/MvcRazorPagesMvcCoreBuilderExtensions.cs @@ -3,12 +3,12 @@ using System; using Microsoft.AspNetCore.Mvc.Abstractions; +using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure; using Microsoft.AspNetCore.Mvc.RazorPages.Internal; using Microsoft.Extensions.DependencyInjection.Extensions; -using Microsoft.Extensions.Options; namespace Microsoft.Extensions.DependencyInjection { @@ -67,6 +67,7 @@ namespace Microsoft.Extensions.DependencyInjection services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); + services.TryAddSingleton(); } } } diff --git a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionDescriptorChangeProvider.cs b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionDescriptorChangeProvider.cs new file mode 100644 index 0000000000..e80fb8c6c7 --- /dev/null +++ b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionDescriptorChangeProvider.cs @@ -0,0 +1,22 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Mvc.Infrastructure; +using Microsoft.AspNetCore.Mvc.Razor.Internal; +using Microsoft.AspNetCore.Razor.Evolution; +using Microsoft.Extensions.Primitives; + +namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal +{ + public class PageActionDescriptorChangeProvider : IActionDescriptorChangeProvider + { + private readonly RazorProject _razorProject; + + public PageActionDescriptorChangeProvider(RazorProject razorProject) + { + _razorProject = razorProject; + } + + public IChangeToken GetChangeToken() => ((DefaultRazorProject)_razorProject).Watch("**/*.cshtml"); + } +}