Make RazorReferenceManage public
Fix for #4938. This change makes the reference manager public and documented so that it can be replaced.
This commit is contained in:
parent
9f4ff22c4a
commit
c3f7613725
|
|
@ -0,0 +1,19 @@
|
||||||
|
// 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 System.Collections.Generic;
|
||||||
|
using Microsoft.CodeAnalysis;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Mvc.Razor.Compilation
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Manages compilation references for Razor compilation.
|
||||||
|
/// </summary>
|
||||||
|
public abstract class RazorReferenceManager
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the set of compilation references to be used for Razor compilation.
|
||||||
|
/// </summary>
|
||||||
|
public abstract IReadOnlyList<MetadataReference> CompilationReferences { get; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -132,8 +132,7 @@ namespace Microsoft.Extensions.DependencyInjection
|
||||||
internal static void AddRazorViewEngineServices(IServiceCollection services)
|
internal static void AddRazorViewEngineServices(IServiceCollection services)
|
||||||
{
|
{
|
||||||
services.TryAddSingleton<CSharpCompiler>();
|
services.TryAddSingleton<CSharpCompiler>();
|
||||||
services.TryAddSingleton<RazorReferenceManager>();
|
services.TryAddSingleton<RazorReferenceManager, DefaultRazorReferenceManager>();
|
||||||
// This caches compilation related details that are valid across the lifetime of the application.
|
|
||||||
|
|
||||||
services.TryAddEnumerable(
|
services.TryAddEnumerable(
|
||||||
ServiceDescriptor.Transient<IConfigureOptions<MvcViewOptions>, MvcRazorMvcViewOptionsSetup>());
|
ServiceDescriptor.Transient<IConfigureOptions<MvcViewOptions>, MvcRazorMvcViewOptionsSetup>());
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
|
||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
using Microsoft.CodeAnalysis.CSharp;
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
using Microsoft.CodeAnalysis.Emit;
|
using Microsoft.CodeAnalysis.Emit;
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
{
|
{
|
||||||
public class RazorReferenceManager
|
public class DefaultRazorReferenceManager : RazorReferenceManager
|
||||||
{
|
{
|
||||||
private readonly ApplicationPartManager _partManager;
|
private readonly ApplicationPartManager _partManager;
|
||||||
private readonly IList<MetadataReference> _additionalMetadataReferences;
|
private readonly IList<MetadataReference> _additionalMetadataReferences;
|
||||||
|
|
@ -19,7 +19,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
private bool _compilationReferencesInitialized;
|
private bool _compilationReferencesInitialized;
|
||||||
private IReadOnlyList<MetadataReference> _compilationReferences;
|
private IReadOnlyList<MetadataReference> _compilationReferences;
|
||||||
|
|
||||||
public RazorReferenceManager(
|
public DefaultRazorReferenceManager(
|
||||||
ApplicationPartManager partManager,
|
ApplicationPartManager partManager,
|
||||||
IOptions<RazorViewEngineOptions> optionsAccessor)
|
IOptions<RazorViewEngineOptions> optionsAccessor)
|
||||||
{
|
{
|
||||||
|
|
@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
_additionalMetadataReferences = optionsAccessor.Value.AdditionalCompilationReferences;
|
_additionalMetadataReferences = optionsAccessor.Value.AdditionalCompilationReferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IReadOnlyList<MetadataReference> CompilationReferences
|
public override IReadOnlyList<MetadataReference> CompilationReferences
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Microsoft.AspNetCore.Razor.Language;
|
using Microsoft.AspNetCore.Razor.Language;
|
||||||
|
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
|
||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
using Microsoft.CodeAnalysis.Razor;
|
using Microsoft.CodeAnalysis.Razor;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
var define = "MY_CUSTOM_DEFINE";
|
var define = "MY_CUSTOM_DEFINE";
|
||||||
var options = new TestOptionsManager<RazorViewEngineOptions>();
|
var options = new TestOptionsManager<RazorViewEngineOptions>();
|
||||||
options.Value.ParseOptions = options.Value.ParseOptions.WithPreprocessorSymbols(define);
|
options.Value.ParseOptions = options.Value.ParseOptions.WithPreprocessorSymbols(define);
|
||||||
var razorReferenceManager = new RazorReferenceManager(GetApplicationPartManager(), options);
|
var razorReferenceManager = new DefaultRazorReferenceManager(GetApplicationPartManager(), options);
|
||||||
var compiler = new CSharpCompiler(razorReferenceManager, options);
|
var compiler = new CSharpCompiler(razorReferenceManager, options);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Mvc.Razor.Test.Internal
|
namespace Microsoft.AspNetCore.Mvc.Razor.Test.Internal
|
||||||
{
|
{
|
||||||
public class ReferenceManagerTest
|
public class DefaultRazorReferenceManagerTest
|
||||||
{
|
{
|
||||||
[Fact]
|
[Fact]
|
||||||
public void GetCompilationReferences_CombinesApplicationPartAndOptionMetadataReferences()
|
public void GetCompilationReferences_CombinesApplicationPartAndOptionMetadataReferences()
|
||||||
|
|
@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Test.Internal
|
||||||
var expectedReferenceDisplays = partReferences
|
var expectedReferenceDisplays = partReferences
|
||||||
.Concat(new[] { objectAssemblyMetadataReference })
|
.Concat(new[] { objectAssemblyMetadataReference })
|
||||||
.Select(r => r.Display);
|
.Select(r => r.Display);
|
||||||
var referenceManager = new RazorReferenceManager(
|
var referenceManager = new DefaultRazorReferenceManager(
|
||||||
applicationPartManager,
|
applicationPartManager,
|
||||||
new TestOptionsManager<RazorViewEngineOptions>(options));
|
new TestOptionsManager<RazorViewEngineOptions>(options));
|
||||||
|
|
||||||
|
|
@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Test.Internal
|
||||||
private static ApplicationPartManager GetApplicationPartManager()
|
private static ApplicationPartManager GetApplicationPartManager()
|
||||||
{
|
{
|
||||||
var applicationPartManager = new ApplicationPartManager();
|
var applicationPartManager = new ApplicationPartManager();
|
||||||
var assembly = typeof(ReferenceManagerTest).GetTypeInfo().Assembly;
|
var assembly = typeof(DefaultRazorReferenceManagerTest).GetTypeInfo().Assembly;
|
||||||
applicationPartManager.ApplicationParts.Add(new AssemblyPart(assembly));
|
applicationPartManager.ApplicationParts.Add(new AssemblyPart(assembly));
|
||||||
applicationPartManager.FeatureProviders.Add(new MetadataReferenceFeatureProvider());
|
applicationPartManager.FeatureProviders.Add(new MetadataReferenceFeatureProvider());
|
||||||
|
|
||||||
|
|
@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
var accessor = new Mock<IRazorViewEngineFileProviderAccessor>();
|
var accessor = new Mock<IRazorViewEngineFileProviderAccessor>();
|
||||||
var applicationManager = new ApplicationPartManager();
|
var applicationManager = new ApplicationPartManager();
|
||||||
var options = new TestOptionsManager<RazorViewEngineOptions>();
|
var options = new TestOptionsManager<RazorViewEngineOptions>();
|
||||||
var referenceManager = new RazorReferenceManager(applicationManager, options);
|
var referenceManager = new DefaultRazorReferenceManager(applicationManager, options);
|
||||||
accessor.Setup(a => a.FileProvider).Returns(fileProvider);
|
accessor.Setup(a => a.FileProvider).Returns(fileProvider);
|
||||||
var provider = new RazorViewCompilerProvider(
|
var provider = new RazorViewCompilerProvider(
|
||||||
applicationManager,
|
applicationManager,
|
||||||
|
|
|
||||||
|
|
@ -440,7 +440,7 @@ this should fail";
|
||||||
};
|
};
|
||||||
|
|
||||||
var applicationPartManager = new ApplicationPartManager();
|
var applicationPartManager = new ApplicationPartManager();
|
||||||
var referenceManager = new RazorReferenceManager(
|
var referenceManager = new DefaultRazorReferenceManager(
|
||||||
applicationPartManager,
|
applicationPartManager,
|
||||||
new TestOptionsManager<RazorViewEngineOptions>());
|
new TestOptionsManager<RazorViewEngineOptions>());
|
||||||
var compiler = GetViewCompiler(
|
var compiler = GetViewCompiler(
|
||||||
|
|
@ -472,7 +472,7 @@ this should fail";
|
||||||
applicationPartManager.ApplicationParts.Add(new AssemblyPart(assembly));
|
applicationPartManager.ApplicationParts.Add(new AssemblyPart(assembly));
|
||||||
applicationPartManager.FeatureProviders.Add(new MetadataReferenceFeatureProvider());
|
applicationPartManager.FeatureProviders.Add(new MetadataReferenceFeatureProvider());
|
||||||
|
|
||||||
referenceManager = new RazorReferenceManager(applicationPartManager, options);
|
referenceManager = new DefaultRazorReferenceManager(applicationPartManager, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
precompiledViews = precompiledViews ?? Array.Empty<CompiledViewDescriptor>();
|
precompiledViews = precompiledViews ?? Array.Empty<CompiledViewDescriptor>();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue