/// <summary>
    /// Configures <see cref="IMvcBuilder" /> to support runtime compilation of Razor views and Razor Pages.
    /// </summary>
    /// <param name="builder">The <see cref="IMvcBuilder" />.</param>
    /// <returns>The <see cref="IMvcBuilder"/>.</returns>
    public static IMvcBuilder AddRazorRuntimeCompilation(this IMvcBuilder builder)
    {
        if (builder == null)
        {
            throw new ArgumentNullException(nameof(builder));
        }

        RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices(builder.Services);
        return(builder);
    }
Exemple #2
0
    public void AddServices_DoesNotPageActionDescriptor_IfItWasNotPreviouslyFound()
    {
        // we want to make sure Page specific featurees are only added if AddRazorPages was called by the user.
        // Arrange
        var services = new ServiceCollection();

        // Act
        RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices(services);

        // Assert
        Assert.Empty(services.Where(service => service.ServiceType == typeof(IActionDescriptorProvider)));
        Assert.Empty(services.Where(service => service.ServiceType == typeof(MatcherPolicy)));
    }
    public void AddServices_ReplacesRazorViewCompiler()
    {
        // Arrange
        var services = new ServiceCollection()
                       .AddSingleton <IViewCompilerProvider, DefaultViewCompilerProvider>();

        // Act
        RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices(services);

        // Assert
        var serviceDescriptor = Assert.Single(services, service => service.ServiceType == typeof(IViewCompilerProvider));

        Assert.Equal(typeof(RuntimeViewCompilerProvider), serviceDescriptor.ImplementationType);
    }
    /// <summary>
    /// Configures <see cref="IMvcBuilder" /> to support runtime compilation of Razor views and Razor Pages.
    /// </summary>
    /// <param name="builder">The <see cref="IMvcBuilder" />.</param>
    /// <param name="setupAction">An action to configure the <see cref="MvcRazorRuntimeCompilationOptions"/>.</param>
    /// <returns>The <see cref="IMvcBuilder"/>.</returns>
    public static IMvcBuilder AddRazorRuntimeCompilation(this IMvcBuilder builder, Action <MvcRazorRuntimeCompilationOptions> setupAction)
    {
        if (builder == null)
        {
            throw new ArgumentNullException(nameof(builder));
        }

        if (setupAction == null)
        {
            throw new ArgumentNullException(nameof(setupAction));
        }

        RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices(builder.Services);
        builder.Services.Configure(setupAction);
        return(builder);
    }
    public void AddServices_ReplacesActionDescriptorProvider()
    {
        // Arrange
        var services = new ServiceCollection()
                       .AddSingleton <IActionDescriptorProvider, CompiledPageActionDescriptorProvider>();

        // Act
        RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices(services);

        // Assert
        var serviceDescriptor = Assert.Single(services, service => service.ServiceType == typeof(IActionDescriptorProvider));

        Assert.Equal(typeof(PageActionDescriptorProvider), serviceDescriptor.ImplementationType);

        serviceDescriptor = Assert.Single(services, service => service.ServiceType == typeof(MatcherPolicy));
        Assert.Equal(typeof(PageLoaderMatcherPolicy), serviceDescriptor.ImplementationType);
    }
 public void Configure(IWebHostBuilder builder)
 {
     // Add Razor services
     builder.ConfigureServices(services => RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices(services));
 }
 private static void AddRazorRuntimeCompilation(this IMvcBuilder mvcBuilder, FeatureRuntimeCompilationOptions options)
 {
     RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices(mvcBuilder.Services);
     mvcBuilder.Services.ConfigureOptions <MvcRazorRuntimeCompilationOptionsConfiguration>();
 }