修改 CloudProduct ImageCache 项目改为 插件

This commit is contained in:
chfei committed 2026-10-22 15:56:55 +08:00
1 parent 5ff52dea92
commit 292cb8638c
26 files changed
+417 -282

No files matched your search

@@ -0,0 +1,53 @@
using MAX.Plugins;
using Microsoft.Extensions.Hosting;
internal static class ConfigurationChecks
{
public static void Run()
{
var tempRoot = Path.GetFullPath(Path.GetTempPath());
var directory = Path.GetFullPath(Path.Combine(tempRoot, "StorePluginChecks-" + Guid.NewGuid().ToString("N")));
Directory.CreateDirectory(directory);
try
{
var environment = Host.CreateApplicationBuilder().Environment;
environment.EnvironmentName = "PluginTest";
var first = Path.Combine(directory, "First");
var second = Path.Combine(directory, "Second");
Directory.CreateDirectory(first);
Directory.CreateDirectory(second);
File.WriteAllText(Path.Combine(first, "appsettings.json"), """{"Shared":"first","Required":"present"}""");
File.WriteAllText(Path.Combine(first, "appsettings.PluginTest.json"), """{"Shared":"environment"}""");
File.WriteAllText(Path.Combine(second, "appsettings.json"), """{"Shared":"second"}""");
using var a = new PluginContext("First", first, environment);
using var b = new PluginContext("Second", second, environment);
if (a.Configuration["Shared"] != "environment" || b.Configuration["Shared"] != "second")
throw new Exception("Configuration isolation/environment override failed");
if (a.RequireConfiguration("Required") != "present") throw new Exception("Required setting missing");
try { b.RequireConfiguration("Required"); throw new Exception("Expected missing key failure"); }
catch (InvalidOperationException ex) when (ex.Message.Contains("Second") && ex.Message.Contains("Required")) { }
const string envKey = "Plugins__First__Shared";
var previous = System.Environment.GetEnvironmentVariable(envKey);
try
{
System.Environment.SetEnvironmentVariable(envKey, "specific-environment-variable");
using var overridden = new PluginContext("First", first, environment);
using var untouched = new PluginContext("Second", second, environment);
if (overridden.Configuration["Shared"] != "specific-environment-variable" || untouched.Configuration["Shared"] != "second")
throw new Exception("Plugin environment variable isolation failed");
}
finally { System.Environment.SetEnvironmentVariable(envKey, previous); }
var absent = Path.Combine(directory, "Absent");
Directory.CreateDirectory(absent);
try { using var invalid = new PluginContext("Absent", absent, environment); throw new Exception("Expected missing file failure"); }
catch (FileNotFoundException) { }
Console.WriteLine("PASS configuration isolation, environment overrides, missing file/key validation");
}
finally
{
if (!directory.StartsWith(tempRoot.TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar, StringComparison.OrdinalIgnoreCase))
throw new InvalidOperationException("Unexpected fixture path");
Directory.Delete(directory, recursive: true);
}
}
}