Merge remote-tracking branch 'origin/v11/dev' into v11/bugfix/fix-more-unstable-acceptance-tests

This commit is contained in:
Nikolaj Geisle
2022-10-17 14:03:09 +02:00
5 changed files with 31 additions and 34 deletions

View File

@@ -41,6 +41,7 @@ public static partial class Constants
public const string ConfigLogging = ConfigPrefix + "Logging";
public const string ConfigMemberPassword = ConfigPrefix + "Security:MemberPassword";
public const string ConfigModelsBuilder = ConfigPrefix + "ModelsBuilder";
public const string ConfigModelsMode = ConfigModelsBuilder + ":ModelsMode";
public const string ConfigNuCache = ConfigPrefix + "NuCache";
public const string ConfigPlugins = ConfigPrefix + "Plugins";
public const string ConfigRequestHandler = ConfigPrefix + "RequestHandler";

View File

@@ -1,5 +1,6 @@
using Microsoft.Extensions.Configuration;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Configuration;
using Umbraco.Cms.Core.Configuration.Models;
namespace Umbraco.Extensions;
@@ -101,4 +102,7 @@ public static class ConfigurationExtensions
/// </returns>
public static RuntimeMode GetRuntimeMode(this IConfiguration configuration)
=> configuration.GetValue<RuntimeMode>(Constants.Configuration.ConfigRuntimeMode);
public static ModelsMode GetModelsMode(this IConfiguration configuration) =>
configuration.GetValue<ModelsMode>(Constants.Configuration.ConfigModelsMode);
}

View File

@@ -140,35 +140,27 @@ public static class UmbracoBuilderDependencyInjectionExtensions
return builder;
}
// See notes in RefreshingRazorViewEngine for information on what this is doing.
private static IUmbracoBuilder AddInMemoryModelsRazorEngine(this IUmbracoBuilder builder)
{
// See notes in RefreshingRazorViewEngine for information on what this is doing.
// We should only add/replace these services when models builder is InMemory, otherwise we'll cause issues.
// Since these services expect the ModelsMode to be InMemoryAuto
if (builder.Config.GetModelsMode() is ModelsMode.InMemoryAuto)
{
builder.Services.AddSingleton<UmbracoRazorReferenceManager>();
builder.Services.AddSingleton<CompilationOptionsProvider>();
builder.Services.AddSingleton<IViewCompilerProvider, UmbracoViewCompilerProvider>();
builder.Services.AddSingleton<RuntimeCompilationCacheBuster>();
builder.Services.AddSingleton<InMemoryAssemblyLoadContextManager>();
// copy the current collection, we need to use this later to rebuild a container
// to re-create the razor compiler provider
builder.Services.AddSingleton<UmbracoRazorReferenceManager>();
builder.Services.AddSingleton<CompilationOptionsProvider>();
builder.Services.AddSingleton<IViewCompilerProvider, UmbracoViewCompilerProvider>();
builder.Services.AddSingleton<RuntimeCompilationCacheBuster>();
builder.Services.AddSingleton<InMemoryAssemblyLoadContextManager>();
builder.Services.AddSingleton<InMemoryModelFactory>();
builder.Services.AddSingleton<InMemoryModelFactory>();
// Register the factory as IPublishedModelFactory
builder.Services.AddSingleton<IPublishedModelFactory, InMemoryModelFactory>();
return builder;
}
// This is what the community MB would replace, all of the above services are fine to be registered
// even if the community MB is in place.
builder.Services.AddSingleton<IPublishedModelFactory>(factory =>
{
ModelsBuilderSettings modelsBuilderSettings = factory.GetRequiredService<IOptions<ModelsBuilderSettings>>().Value;
if (modelsBuilderSettings.ModelsMode == ModelsMode.InMemoryAuto)
{
return factory.GetRequiredService<InMemoryModelFactory>();
}
else
{
return factory.CreateDefaultPublishedModelFactory();
}
});
builder.Services.AddSingleton<IPublishedModelFactory>(factory => factory.CreateDefaultPublishedModelFactory());
return builder;
}
}

View File

@@ -28,13 +28,13 @@
"datatype": "choice",
"choices": [
{
"displayName": ".NET 6.0",
"description": "Target net6.0",
"choice": "net6.0"
"displayName": ".NET 7.0",
"description": "Target net7.0",
"choice": "net7.0"
}
],
"defaultValue": "net6.0",
"replaces": "net6.0"
"defaultValue": "net7.0",
"replaces": "net7.0"
},
"UmbracoVersion": {
"displayName": "Umbraco version",

View File

@@ -38,13 +38,13 @@
"datatype": "choice",
"choices": [
{
"displayName": ".NET 6.0",
"description": "Target net6.0",
"choice": "net6.0"
"displayName": ".NET 7.0",
"description": "Target net7.0",
"choice": "net7.0"
}
],
"defaultValue": "net6.0",
"replaces": "net6.0"
"defaultValue": "net7.0",
"replaces": "net7.0"
},
"UmbracoVersion": {
"displayName": "Umbraco version",